【问题标题】:Place buttons in LinearLayout Vertical and Horizantal在 LinearLayout 中垂直和水平放置按钮
【发布时间】:2014-04-30 12:16:40
【问题描述】:

我是 Android 编程新手,使用的是最新版本的 Android Studio。

我有一个LinearLayout,想以编程方式放置 20 个按钮。

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear_layout);
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
for (int i = 0; i<20;i++)
{
  Button btn = new Button(this);
  btn.setText("Button" + (i + 1));
  btn.setTag(i + 1);
  btn.setLayoutParams (new LinearLayout.LayoutParams(200, LinearLayout.LayoutParams.WRAP_CONTENT,1));
  btn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
         Toast.makeText(getApplicationContext(), view.getTag().toString(), Toast.LENGTH_SHORT).show();
           }
        });
        linearLayout.addView(btn);
 }

我正在使用此代码。它在另一个下添加了 20 个按钮。但是我想像这样放置它们:

Button1 Button2
Button3 Button4
...
Button19 Button20

是否可以使用LinearLayout 或者我应该使用不同类型的布局?

【问题讨论】:

    标签: android android-layout android-studio


    【解决方案1】:

    你不能只用一个 LinearLayout 来做到这一点。

    要实现这一点,您必须使用:

    TableLayoutGridView 或(与这两者相比并不理想)水平线性布局内的 2 个垂直线性布局

    【讨论】:

    • 感谢您的回答。我使用过 TableLayout 并且它有效,但我想知道哪一个更适合用于此目的? GridView有优势吗?
    • 不客气,很高兴它对您有所帮助。取决于,它们用于不同的目的。使用 TableLayout,您可以在其中拥有更多可自定义和不同的类型,在 GridView 中,您可以使用无法像使用 TableRows 那样轻松自定义的适配器。
    【解决方案2】:

    使用单个 LinearLayout 是不可能的。您可以使用嵌套布局,因此在您的示例中 Button1 和 Button2 处于一个水平布局中,然后将该布局添加到更大的垂直布局中。

    您也可以使用 GridLayout - 它旨在轻松处理您的情况。

    【讨论】: