它在一行中创建动态按钮
final LinearLayout layoutshape = (LinearLayout) findViewById(R.id.linearshape);
a = new Button[10];
for (int i = 0; i < 10; i++) {
a[i] = new Button(this);
a[i].setText(""+i);
a[i].setId(i);
a[i].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
a[i].setBackgroundResource(R.drawable.background);
layoutshape.addView(a[i]);
}
但我想让它分成三行。 例如:如果我有30个按钮,那么它应该在第一行的10个按钮中显示,然后是下一个 第二排10个,第三排10个
o / p按钮为:
b1 b2 b3 b4 b5
b6 b7 b8 b9 b10
b11 b12 b13 b14 b15
答案 0 :(得分:2)
首先将主布局(layoutshape)的方向设置为垂直。
for (int i = 0; i < i/10; i++) {
LinearLayout row = new LinearLayout(this);
将行的方向设置为水平。
for (int i = 0; i < 30; i++) {
a[i] = new Button(this);
a[i].setText(""+i);
a[i].setId(i);
a[i].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
a[i].setBackgroundResource(R.drawable.background);
row.addView(a[i]);
}
layoutshape.addView(row);
}
答案 1 :(得分:1)
您至少需要n
LinearLayout
,其中n
是您的行数。如果您确实想使用LinearLayout
,请使用以下LayoutParams
添加按钮:
new LinearLayout.LayoutParams(0,LayoutParams.WRAP_CONTENT, 1/numButtonsInRow);
1/numButtonsInRow
是按钮的重量。例如,如果连续有10个按钮,则每个按钮的权重为0.1
。如果您的布局是水平的,请将其width
设置为0,如果它是垂直设置,则将其height
设置为0。
在您的情况下,您可能应该使用GridLayout
或TableLayout
。
答案 2 :(得分:0)
在“layoutshape”LinearLayout中创建3个LinearLayouts,方向为垂直。 然后将按钮添加到内部线性布局中。
答案 3 :(得分:0)
30个按钮看起来像键盘: http://developer.android.com/reference/android/inputmethodservice/Keyboard.html 键盘可以通过xml创建(参见SDK中的SoftKeyboard示例,samples / android-10 / SoftKeyboard子目录)。
如果您确实需要3行按钮,我的建议是在运行时填充3个水平线性布局。但请注意,屏幕尺寸各不相同,手机上的好东西在平板电脑上看起来可能很难看。