我正在尝试使用以下代码创建一个3x4网格按钮:
public class Grid extends AppCompatActivity {
LinearLayout myLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_grid);
myLayout = (LinearLayout) findViewById(R.id.content_grid);
for (int i = 0; i < 3; i++) {
LinearLayout row = new LinearLayout(this);
LayoutParams rowParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
row.setLayoutParams(rowParams);
for (int j = 0; j < 4; j++) {
final Button btn = new Button(this);
LayoutParams btnParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
btn.setLayoutParams(btnParams);
btn.setText(" " + (j + 1 + (i * 4)));
btn.setId(j + 1 + (i * 4));
row.addView(btn);
}
myLayout.addView(row);
}
setContentView(myLayout);;
}
}
这段代码完全正常,可以根据需要创建网格,但是如果我改变了行
myLayout = (LinearLayout) findViewById(R.id.content_grid);
到
myLayout = new LinearLayout(this);
然后只生成网格的第一行,而不是第二行和第三行。我想知道为什么会这样?
是否行
setContentView(R.id.content_grid);
是否存在似乎在第二种情况下没有区别。
另外我的content_grid.xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/content_grid"
</LinearLayout>
答案 0 :(得分:0)
默认情况下LinearLayout
设置水平方向。尝试将myLayout
垂直设置为LayoutParams
。