1

我刚开始使用 android,并在此处发布之前尝试了以下问题以获得此答案:

Android - 在运行时将布局添加到主布局

以编程方式将按钮添加到布局

通过获取每个孩子的位置动态地将孩子添加到 LinearLayout

而且我仍然无法向线性布局添加按钮:(

以下是活动代码,请让我知道我错在哪里:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LinearLayout layout = (LinearLayout) View.inflate(this, R.layout.activity_main, null);

        Button btn = new Button(this);
        btn.setId(123);
        btn.setText("Welcome to WI FI World");
        layout.addView(btn);
    }

xml 如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</LinearLayout>
4

3 回答 3

2

尝试为您的布局分配一个 id,然后将按钮添加到布局中。

我很确定这两种布局是不一样的,所以你实际上是在向一个从未显示的布局中添加一个按钮。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    LinearLayout layout = (LinearLayout) findViewById(R.id.lnr_main);

    Button btn = new Button(this);
    btn.setId(123);
    btn.setText("Welcome to WI FI World");
    layout.addView(btn);
}

为 Layout 分配了一个 id

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/lnr_main"
  android:layout_width="match_parent"
  android:layout_height="match_parent" >

</LinearLayout>
于 2012-09-03T18:15:24.590 回答
1

给你的linearLayout一个id。

然后在你的代码中

LinearLayout layout = (LinearLayout)findViewById(R.id.given_id);

保持其余相同,应该工作。

于 2012-09-03T18:13:23.397 回答
1

在 XML 中获取 LinearLayout 的 ID,在 java 代码中使用 XML 中 LinearLayout 的 ID

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/linear" >

</LinearLayout>

在 onCreate() 中:

LinearLayout linear=(LinearLayout)findViewById(R.id.linear);

 //Select widgets
 linear.addView()
于 2012-09-03T18:13:47.830 回答