但是我想想这样的按钮填充屏幕:
这是我的代码:
<TableLayout
android:id="@+id/Tb1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableRow
android:id="@+id/r1"
android:layout_width="match_parent"
android:layout_height="match_parent"></TableRow>
<TableRow
android:id="@+id/r2"
android:layout_width="match_parent"
android:layout_height="match_parent"></TableRow>
<TableRow
android:id="@+id/r3"
android:layout_width="match_parent"
android:layout_height="match_parent"></TableRow>
</TableLayout>
和
Button btn1;
private TableLayout buttonTableLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.btn1);
buttonTableLayout = (TableLayout) findViewById(R.id.Tb1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int row = 0; row < buttonTableLayout.getChildCount(); ++row)
((TableRow) buttonTableLayout.getChildAt(row)).removeAllViews();
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int row = 0; row < 3; row++) {
TableRow currentTableRow = getTableRow(row);
for (int column = 0; column < 5; column++) {
Button newGuessButton = (Button) inflater.inflate(R.layout.my_button, null);
String myName = new String(String.valueOf((row * 5) + column + 1));
newGuessButton.setText(myName);
currentTableRow.addView(newGuessButton);
}
}
}
});
}
private TableRow getTableRow(int row) {
return (TableRow) buttonTableLayout.getChildAt(row);
}
和xml(my_button):
<Button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/newButton" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content"></Button>
请给我一些建议来解决它。
答案 0 :(得分:1)
Android TableRow
类实际上扩展了LinearLayout
类,因此您可以在此处使用LinearLayout
的所有功能。
在这种情况下,您可以使用android:layout_weight
来平均拉伸这些按钮。在添加这些按钮的地方,只需添加以下代码即可。
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT);
p.weight = 1;
button.setLayoutParams(p);
或者将这些行添加到button.xml
布局文件中:
android:layout_width="0dp"
android:layout_weight="1"
Docs说:
同等重视儿童
要创建线性布局,其中每个孩子在屏幕上使用相同的空间量,请将每个视图的
android:layout_height
设置为"0dp"
(对于垂直布局)或{{1}每个视图到android:layout_width
(对于水平布局)。然后将每个视图的"0dp"
设置为android:layout_weight
。