4

它在单行中创建动态按钮

 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

4

4 回答 4

2

首先将主布局(布局形状)的方向设置为垂直。

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);
}
于 2013-04-02T06:13:10.897 回答
1

您至少需要行数在n LinearLayout哪里n。如果您真的想使用 aLinearLayout然后使用以下命令添加按钮LayoutParams

new LinearLayout.LayoutParams(0,LayoutParams.WRAP_CONTENT, 1/numButtonsInRow);

1/numButtonsInRow是按钮的重量。例如,如果您连续有 10 个按钮,则每个按钮的权重为0.1. 如果您的布局是水平的,请将其设置width为 0,如果是垂直的,请将其设置height为 0。

在您的情况下,您可能应该使用 a GridLayoutorthough TableLayout

于 2013-04-02T06:10:32.287 回答
0

在“layoutshape”LinearLayout 中创建 3 个 LinearLayouts,方向为垂直。然后将按钮添加到内部线性布局。

于 2013-04-02T06:09:26.637 回答
0

30 个按钮看起来像一个键盘: http: //developer.android.com/reference/android/inputmethodservice/Keyboard.html 并且可以通过 xml 创建键盘(参见 SDK 中的 SoftKeyboard 示例,samples/android-10/软键盘子目录)。

如果您真的需要 3 行按钮,我的建议是在运行时填充 3 个水平线性布局。但请注意,屏幕尺寸各不相同,手机上的好东西在平板电脑上可能看起来很丑。

于 2013-04-02T06:11:48.740 回答