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.