简体   繁体   English

如何创建表格布局

[英]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: 如果我回答A但正确答案是C或D,则我有:

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

But if I answer A but the correct answer is B, I have this: 但是,如果我回答A但正确答案是B,则我有:

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

In this case, why do the two button appears in that way??? 在这种情况下,为什么两个按钮会以这种方式出现?

Here is my xml code: 这是我的xml代码:

<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. 这是我在活动中的代码,当单击按钮A时,将创建一个新的AlertDialog。 This cose is only the method when the button A is clicked. 这种方式只是单击按钮A时的方法。

 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 : 要了解为什么它确实起作用,请查看表布局Andoird文档

The children of a TableLayout cannot specify the layout_width attribute. TableLayout的子级不能指定layout_width属性。 Width is always MATCH_PARENT. 宽度始终为MATCH_PARENT。 However, the layout_height attribute can be defined by a child; 但是,layout_height属性可以由子级定义。 default value is WRAP_CONTENT. 默认值为WRAP_CONTENT。 If the child is a TableRow, then the height is always WRAP_CONTENT. 如果子级是TableRow,则高度始终为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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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