简体   繁体   中英

how to create a table layout

I need to create a table layout that contains only two rows and two columns.The purpose is to create a game like "the millionaire" where the player can choose the correct answer.So I use table layout for the four answer. The answers are displayed as:

  A,C B,D 

If I answer A but the correct answer are C or D, I have this:

http://tinypic.com/view.php?pic=33w33oo&s=5

But if I answer A but the correct answer is B, I have this:

http://i40.tinypic.com/5wfg55.jpg

In this case, why do the two button appears in that way???

Here is my xml code:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res/com.example.applicazionescienza"
    android:id="@+id/tabella"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="bottom|center"
    android:background="@drawable/sfondo"
    android:gravity="bottom|center"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".Gioca" >

    <TextView
        android:id="@+id/domanda"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:alpha="0.8"
        android:background="@drawable/bottonedomanda"
        android:text="TextView" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_marginBottom="10dp"
        android:gravity="bottom"
        android:shrinkColumns="*"
        android:stretchColumns="*" >

        <TableRow
            android:id="@+id/tableRow4"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="8dp" >

            <Button
                android:id="@+id/buttonA"
                android:layout_height="match_parent"
                android:layout_marginRight="5dp"
                android:layout_weight="1"
                android:alpha="0.6"
                android:background="@drawable/bottonerisposta"
                android:gravity="center"
                android:maxWidth="64dp"
                android:minWidth="64dip"
                android:textSize="11sp"
                android:width="0px" />

            <Button
                android:id="@+id/buttonC"
                android:layout_height="match_parent"
                android:layout_marginLeft="5dp"
                android:layout_weight="1"
                android:alpha="0.6"
                android:background="@drawable/bottonerisposta"
                android:gravity="center"
                android:maxWidth="64dp"
                android:textSize="11sp"
                android:width="0px" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <Button
                android:id="@+id/buttonB"
                android:layout_height="match_parent"
                android:layout_marginRight="5dp"
                android:layout_weight="1"
                android:alpha="0.6"
                android:background="@drawable/bottonerisposta"
                android:gravity="center"
                android:maxWidth="64dp"
                android:minWidth="64dip"
                android:textSize="11sp"
                android:width="0px" />

            <Button
                android:id="@+id/buttonD"
                android:layout_height="match_parent"
                android:layout_marginLeft="5dp"
                android:layout_weight="1"
                android:alpha="0.6"
                android:background="@drawable/bottonerisposta"
                android:gravity="center"
                android:maxWidth="64dp"
                android:textSize="11sp"
                android:width="0px" />
        </TableRow>
    </TableLayout>

    <TextView
        android:id="@+id/punteggio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/bottonedomanda" />

</TableLayout>

This is my code in the activity that when the button A is clicked create a new AlertDialog. This cose is only the method when the button A is clicked.

 if(v.getId()==R.id.buttonA){
            a.setBackgroundResource(R.drawable.bottonerispostaselezionato);
            b.setBackgroundResource(R.drawable.bottonedomanda);
            c.setBackgroundResource(R.drawable.bottonedomanda);
            d.setBackgroundResource(R.drawable.bottonedomanda);
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            AlertDialog.Builder builder = new AlertDialog.Builder(
                    context);
            builder.setTitle("Conferma");
            builder.setMessage("Vuoi confermare la risposta A?");
            builder.setCancelable(false);

            builder.setNegativeButton("Annulla",
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            a.setBackgroundResource(R.drawable.bottonedomanda);
                            b.setBackgroundResource(R.drawable.bottonedomanda);
                            c.setBackgroundResource(R.drawable.bottonedomanda);
                            d.setBackgroundResource(R.drawable.bottonedomanda);
                        }
                    });
            builder.setPositiveButton("Prosegui",
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {

                            Integer rispostaEsatta = arrayRisposte
                                    .get(indiceCorrente);
                            if (rispostaEsatta == 0) {//if the correct answer is button A

                                score = score + domandaGiusta;
                                tv.setText("RISPOSTA CORRETTA   PUNTEGGIO: "+score);
                                a.setBackgroundResource(R.drawable.bottonerispostacorretto);// set background green
                                Log.i("Risposta esatta complimenti",
                                        "sdfd");    

                            } else {
                                a.setBackgroundResource(R.drawable.botteerrato);// set background red
                                score = score - domandaSbagliata;
                                tv.setText("RISPOSTA ERRATA   PUNTEGGIO: "+score);              
                                switch (rispostaEsatta) {// if button A is wrong I know who is the correct button...button A=0,B=1,C=2,D=3;
                                case 1:// button B correct but user click on button A
                                    a.setBackgroundResource(R.drawable.botteerrato);

                                    b.setBackgroundResource(R.drawable.bottonerispostacorretto);
//                                  c.setBackgroundResource(R.drawable.bottonedomanda);
//                                  d.setBackgroundResource(R.drawable.bottonedomanda);
                                    Log.i("lunghezza altezza", String.valueOf(a.getWidth())+" "+String.valueOf(a.getHeight()));
                                    Log.i("lunghezza altezza", String.valueOf(b.getWidth())+" "+String.valueOf(b.getHeight()));
                                    Log.i("lunghezza altezza", String.valueOf(c.getWidth())+" "+String.valueOf(c.getHeight()));
                                    Log.i("lunghezza altezza", String.valueOf(d.getWidth())+" "+String.valueOf(d.getHeight()));
                                    break;
                                case 2://Button C correct but user click button A
                                    c.setBackgroundResource(R.drawable.bottonerispostacorretto);
                                    b.setBackgroundResource(R.drawable.bottonedomanda);
                                    d.setBackgroundResource(R.drawable.bottonedomanda);
                                    break;
                                case 3:// button D correct but user click button A
                                    d.setBackgroundResource(R.drawable.bottonerispostacorretto);                                
                                    c.setBackgroundResource(R.drawable.bottonedomanda);
                                    b.setBackgroundResource(R.drawable.bottonedomanda);
                                    break;
                                }

                            } 
                            try {
                                Thread.sleep(1000);
                            } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                            Thread t=new Thread(){
                                public void run(){
                                    runOnUiThread(new Runnable(){
                                        public void run(){
                                    try {
                                        Thread.sleep(2000);
                                    } catch (InterruptedException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                    if(numeroDomande<2){
                                        numeroDomande++;
                                        arrayDomande.remove(indiceCorrente);
                                        arrayRisposte.remove(indiceCorrente);
                                        immaggini.remove(indiceCorrente);

                                        scegliDomanda();


                                    } else {
                                        int v=i+1;
                                        Intent i = new Intent(context,
                                                Livello.class);
                                        i.putExtra("livello", v);
                                        i.putExtra("punteggio",score);
                                        startActivity(i);

                                    }

                                        }
                                    });
                                }
                            };
                            t.start();

                        }
            });

            builder.create().show();

            Log.i("Lo score è ", String.valueOf(score));




        }

Please help me!

Ok, you have some mistakes on settings the layout properties. More specifically on width properties. This code should solve your problem. To understand why exactly this works, take a look on Table Layout Andoird Documentation :

The children of a TableLayout cannot specify the layout_width attribute. Width is always MATCH_PARENT. However, the layout_height attribute can be defined by a child; default value is WRAP_CONTENT. If the child is a TableRow, then the height is always WRAP_CONTENT.

Furthermore, you put different values for max Width and min Width of your buttons.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:id="@+id/tabella"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical"
          tools:context=".Gioca" >

<TextView
        android:id="@+id/domanda"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:alpha="0.8"
        android:text="TextView" />

<TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_marginBottom="10dp"
        android:gravity="bottom"
        android:shrinkColumns="*"
        android:stretchColumns="*" >

    <TableRow
            android:id="@+id/tableRow4"
            android:layout_marginBottom="8dp" >

        <Button
                android:id="@+id/buttonA"
                android:layout_height="match_parent"
                android:layout_marginRight="5dp"
                android:alpha="0.6"
                android:gravity="center"
                android:textSize="11sp"/>

        <Button
                android:id="@+id/buttonC"
                android:layout_height="match_parent"
                android:layout_marginLeft="5dp"
                android:alpha="0.6"
                android:gravity="center"/>
    </TableRow>

    <TableRow
            android:id="@+id/tableRow3"
            android:layout_height="match_parent" >

        <Button
                android:id="@+id/buttonB"
                android:layout_height="match_parent"
                android:layout_marginRight="5dp"
                android:alpha="0.6"
                android:gravity="center"
                android:textSize="11sp"
                 />

        <Button
                android:id="@+id/buttonD"
                android:layout_height="match_parent"
                android:layout_marginLeft="5dp"
                android:alpha="0.6"
                android:gravity="center"
                android:textSize="11sp"
                />
    </TableRow>
</TableLayout>

<TextView
        android:id="@+id/punteggio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    />

</LinearLayout>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM