繁体   English   中英

代码中的“均匀分布权重”

[英]“Distribute weights evenly” in code

我有一个小问题......这是我的代码......有没有办法为我制作的那些按钮“平均分配权重”......我试图button[i].setWidth() .. 但是当我转身时我的手机看起来很难看..所以有没有自动分配按钮宽度?

    ViewGroup row1 = (ViewGroup)findViewById(R.id.TableRow02);
    ViewGroup row2 = (ViewGroup)findViewById(R.id.TableRow04);
    ViewGroup row3 = (ViewGroup)findViewById(R.id.TableRow06);
    ViewGroup row4 = (ViewGroup)findViewById(R.id.TableRow08);
    ViewGroup row5 = (ViewGroup)findViewById(R.id.TableRow10);

    Button button[] = new Button[36];
    for(int i=1;i<36;i++)
    {
        button[i] = new Button(this);

        if(i==32||i==33||i==34||i==35){button[i].setVisibility(-1);}

        button[i].setText("700€");
        button[i].setTextSize(10);
        button[i].setWidth(20);

     // Insert buttons in rows
        if(i<8){row1.addView(button[i]);}
        else if(i<15){row2.addView(button[i]);}
        else if(i<22){row3.addView(button[i]);}
        else if(i<29){row4.addView(button[i]);}
        else if(i<36){row5.addView(button[i]);}
    }

从战术上讲,将按钮放在LinearLayout中并为每个按钮设置android:layout_weight="1"

从战略上讲,设计一个体面的 UI,它不涉及一行 36 个按钮。

正如 CommonsWare 所说,您应该考虑设置按钮的权重参数,而不是设置宽度,以实现灵活的布局。

如果您想以编程方式实现这一点(即在代码中而不是在 XML 布局中),您可以使用按钮的setLayoutParams方法。 我还没有测试过,但是这样的东西应该可以工作:

// outside of loop
LayoutParams p = new LinearLayout.LayoutParams(
    LayoutParams.MATCH_PARENT, 
    LayoutParams.MATCH_PARENT, 
    1.0
);

....
// enter loop
....

button[i].setLayoutParams(p);

在本例中, 1.0代表权重。 其他两个参数代表layout_widthlayout_height参数。

但说真的,我无法想象具有 36 个按钮的布局非常用户友好:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM