我有一个正在建设的应用程序。在其中一个子菜单中,我需要对按钮进行通用显示,因此我想做一个可以显示给定数量的所需按钮的活动。
我以编程方式成功实现了这一点,但我希望按钮的总网格能够填满它们所在的整个父级,这恰好是横向屏幕的 3/4。按钮的数量从 16 到 38 不等。!
我也成功地用其他网格按钮实现了这一点,在 xml 中,具有权重值和条目的 match_parent 值。
当我以编程方式为按钮或行分配 match_parent 值时,它会占据整个父布局,而不是像我期望的那样共享它,即使它们具有相同的权重值 1.0f
相关代码如下。我也想发布图片,但我没有这样做的声誉。
`LinearLayout 布局 = (LinearLayout) findViewById(R.id.linear_custom_draw); layout.setOrientation(LinearLayout.VERTICAL);
int columns = Math.min(6, 4+category); //sets number of buttons per row to 4-6
for (int i = 0; i < 4+category; i++) {
LinearLayout row = new LinearLayout(this);
row.setLayoutParams(new android.view.ViewGroup.LayoutParams(android.view.WindowManager.LayoutParams.MATCH_PARENT,
android.view.WindowManager.LayoutParams.MATCH_PARENT)); //上面的行是填充整个线性布局的行,即使有更多条目,这与我的 xml 定义的尝试不同。row.setOrientation(LinearLayout.HORIZONTAL); row.setWeightSum(1.0f); if(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);`