我已经为记忆游戏申请了它。它工作正常,但是当我将方向从横向更改为纵向时,第一行和第二行之间有一个微小的差距。. 我制作了一个 tableLayout,在其中制作了一行,我在其中动态地制作行并在单击时插入按钮。
编辑:图像(见黑色椭圆内)
布局:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TableLayout03">
<TableRow android:id="@+id/TableRow05"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv1"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:textSize="20dip"
android:paddingLeft="10sp"
android:paddingBottom="13.64dip"
android:layout_weight="1">
</TextView>
<Chronometer
android:id="@+id/chronometer1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Chronometer"
android:textStyle="bold"
android:textSize="20dip"
android:paddingBottom="13.64dip"
android:textColor="#FFFFFF" />
</TableRow>
<TableRow android:id="@+id/TableRow03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
>
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center">
</LinearLayout></TableRow>
<TableRow android:id="@+id/scorerow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
>
<LinearLayout android:id="@+id/scorelinear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/scoreboard"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:textSize="20dip"
android:paddingLeft="10sp"
android:layout_weight="1">
</TextView>
</LinearLayout></TableRow>
<RelativeLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:gravity="center"
>
<Button
android:id="@+id/play_button"
android:layout_width="80dip"
android:layout_height="50dip"
android:layout_alignParentBottom="true"
android:text="Play"
android:textColor="#ffffff"
android:textSize="25dip"
android:textStyle="bold" />
</RelativeLayout>
</TableLayout>
和Java代码相同的是:
private void newGame(int c, int r) {
Log.v("Start"," New Game");
tr = (TableRow)findViewById(R.id.TableRow03);
tr.removeAllViews();
tablebg = new TableLayout(tbcontext);
tr.addView(tablebg);
//tablebg.addView(createRow1());
for (int y = 0; y < ROW_COUNT; y++) {
tablebg.addView(createRow(y));
}
......
.....
}
private TableRow createRow(int y){
///Log.v("Start"," Create New Row");
TableRow row;
row = new TableRow(tbcontext);
row.setHorizontalGravity(Gravity.CENTER);
row.setVisibility(View.VISIBLE);
//row.setPadding(0, 0, 0, 0);
for (int x = 0; x < COL_COUNT; x++) {
row.addView(createImageButton(x,y));
}
tablerow[rw] = row;
rw++;
return row;
}
private View createImageButton(int x, int y){
//Log.v("Start"," Create Image Button");
DisplayMetrics metrics = myContext.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
if(width < height) {//portrait
w_width=((width-60)/4);
}
if(width > height){//landscape
w_width= ((height-100)/6);
}
Button button = new Button(tbcontext);
//Button button = new Button(tbcontext);
button.setBackgroundDrawable(Card_q);
button.setId(100*x+y);
button.setVisibility(View.VISIBLE);
Log.v("button width",""+w_width);
button.setWidth(w_width);
button.setHeight(w_width);
button.setOnClickListener(buttonListener1);
bt[btn] = button;
btn++;
return button;
}
当我从横向更改为纵向时没有问题。