我需要创建一个只包含两行两列的表格布局。目的是创建一个像“百万富翁”这样的游戏,玩家可以选择正确的答案。所以我使用表格布局来做四个答案。答案显示为:
A,C B,D
如果我回答 A 但正确答案是 C 或 D,我有这个:
http://tinypic.com/view.php?pic=33w33oo&s=5
但如果我回答 A 但正确答案是 B,我有这个:
http://i40.tinypic.com/5wfg55.jpg
在这种情况下,为什么两个按钮会这样出现???
这是我的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>
这是我在活动中的代码,当单击按钮 A 时会创建一个新的 AlertDialog。此 cose 仅是单击按钮 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));
}
请帮我!