Java Android:嵌套的Linearlayouts将不显示按钮网格,与父项匹配
我有一个应用程序正在建设中。在其中一个子菜单中,我需要通用的按钮显示,因此我想做一个活动,可以显示给定数量的所需按钮 我已经成功地通过编程实现了这一点,但我希望按钮的总网格填充它们所在的整个父级,这恰好是横向屏幕的3/4。按钮的数量从16到38不等 我还成功地用其他按钮网格实现了这一点,它们是xml格式、权重值和条目的匹配父值 当我以编程方式为按钮或行分配match_父值时,它会占据整个父布局,而不是像我期望的那样共享它,即使它们的权重值相同,为1.0f 相关代码如下。我也想张贴图片,但我没有这样做的声誉 `LinearLayout布局=(LinearLayout)findViewById(R.id.linear\u custom\u draw); 布局。设置方向(线性布局。垂直)Java Android:嵌套的Linearlayouts将不显示按钮网格,与父项匹配,java,android,android-linearlayout,Java,Android,Android Linearlayout,我有一个应用程序正在建设中。在其中一个子菜单中,我需要通用的按钮显示,因此我想做一个活动,可以显示给定数量的所需按钮 我已经成功地通过编程实现了这一点,但我希望按钮的总网格填充它们所在的整个父级,这恰好是横向屏幕的3/4。按钮的数量从16到38不等 我还成功地用其他按钮网格实现了这一点,它们是xml格式、权重值和条目的匹配父值 当我以编程方式为按钮或行分配match_父值时,它会占据整个父布局,而不是像我期望的那样共享它,即使它们的权重值相同,为1.0f 相关代码如下。我也想张贴图片,但我没有这
int columns=Math.min(6,4+类别)//将每行的按钮数设置为4-6
对于(int i=0;i<4+类别;i++){
LinearLayout行=新的LinearLayout(该行);
row.setLayoutParams(新的android.view.ViewGroup.LayoutParams(android.view.WindowManager.LayoutParams.MATCH_父级,
android.view.WindowManager.LayoutParams.MATCH_PARENT);
//与xml定义的尝试不同,上面的一行填充了整个linearlayout,尽管有更多的条目。
行。设置方向(线性布局。水平);
行设置权重总和(1.0f);
如果(i%2==0){
row.setBackgroundColor(getResources().getColor(R.color.listview_red_backgr_color));
}
for (int j = 0; j < columns; j++) {
int index = (i*columns)+j;
if(formations.size() > index){
Button btnTag = new Button(this);
btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
btnTag.setText(formations.get(index).getName());
btnTag.setTextColor(getResources().getColor(R.color.black_overlay));
btnTag.setId(formations.get(index).getId());
row.addView(btnTag);
}
}
layout.addView(row);`
for(int j=0;j索引){
按钮btnTag=新按钮(此按钮);
btnTag.setLayoutParams(新的LayoutParams(LayoutParams.WRAP_内容,LayoutParams.WRAP_内容));
btnTag.setText(formations.get(index.getName());
btnTag.setTextColor(getResources().getColor(R.color.black_overlay));
setId(formations.get(index.getId());
行。添加视图(btnTag);
}
}
布局。添加视图(行)`
尝试使用TableLayout。每行将强制执行整个元素,以使用相同的wights匹配父行。您可以使用计数器编程控制每行的按钮数。循环计数器末尾添加按钮,然后添加新的表行
TableLayout tbl=new TableLayout(context);//create table
TableRow tr=new TableRow(context);//create table row
tr.addView(view);//add your button instead of the view
tbl.addView(tr);//add the row into the Table
在XML文件中
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/keypad"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:stretchColumns="*">
<TableRow>
<Button android:id="@+id/keypad_1" android:text="@string/_1"></Button>
<Button android:id="@+id/keypad_2" android:text="@string/_2"></Button>
<Button android:id="@+id/keypad_3" android:text="@string/_3"></Button>
</TableRow>
</TableLayout>
尝试使用TableLayout。每行将强制执行整个元素,以使用相同的wights匹配父行。您可以使用计数器编程控制每行的按钮数。循环计数器末尾添加按钮,然后添加新的表行
TableLayout tbl=new TableLayout(context);//create table
TableRow tr=new TableRow(context);//create table row
tr.addView(view);//add your button instead of the view
tbl.addView(tr);//add the row into the Table
在XML文件中
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/keypad"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:stretchColumns="*">
<TableRow>
<Button android:id="@+id/keypad_1" android:text="@string/_1"></Button>
<Button android:id="@+id/keypad_2" android:text="@string/_2"></Button>
<Button android:id="@+id/keypad_3" android:text="@string/_3"></Button>
</TableRow>
</TableLayout>
我会试一试。跳出框框思考可能会有所帮助。我正在做类似的事情,创建一个Numpad作为布局对话框。我必须将每三个数字放在一起作为一行。TableLayout是@User1203811不太有效的解决方案。TableLayout生成完全相同的面向左上角的表格按钮,这绝不会像我希望的那样填满屏幕。与以前的解决方案唯一的区别是,现在它根本不会对包装内容或匹配父项做出反应。无论发生什么情况,它都会生成相同的输出。从XML文件生成TableLAyout,然后获取对它的引用并按上面所述进行修改。我将编辑我的答案以解释用于Table@user1203811再次检查我的答案。请确保将这句话放在XML:android:stretchColumns=“*”中我会试一试。跳出框框思考可能会有所帮助。我正在做类似的事情,创建一个Numpad作为布局对话框。我必须将每三个数字放在一起作为一行。TableLayout是@User1203811不太有效的解决方案。TableLayout生成完全相同的左上角方向的butt表ons,它决不会像我希望的那样填满屏幕。与以前的解决方案唯一的区别是,现在它根本不会对包装内容或匹配父项做出反应。无论发生什么情况,它都会生成相同的输出。从XML文件生成TableLAyout,然后获取对它的引用并按上面所述进行修改。我将编辑我的答案以解释XML代码e代表Table@user1203811再次检查我的答案。请确保将这句话放在XML:android:stretchColumns=“*”中