0

我有一个activity_main.xml包含以下内容的布局:

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

我有一个布局,new_bucket.xml,其中包含以下代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/newEntry"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    tools:context=".MainActivity" >

    <LinearLayout
        android:id="@+id/main"
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:background="#253514"
        android:clickable="true"
        android:onClick="toggleAmagar" 
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="text1"
            android:textColor="#ffffff" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/child"
        android:layout_width="fill_parent"
        android:layout_height="150dp"
        android:layout_below="@id/main"
        android:background="#666666"
        android:clickable="true"
        android:onClick="toggleAmagar" 
        android:orientation="vertical">
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="text2" />

    </LinearLayout>
</LinearLayout>

我想要实现的是以编程方式将几个“实例”添加new_bucket.xml到 activity_main.xml 中的主布局。这些实例应该出现在activity_main.xml.

我现在有点卡住了。我试图只添加一个 TextViewactivity_main.xml但我什至无法处理......

LinearLayout my_root = (LinearLayout) getLayoutInflater().inflate(R.layout.activity_main, null);
LinearLayout A = new LinearLayout(this);
A.setOrientation(LinearLayout.HORIZONTAL);
TextView tv = new TextView(this);
tv.setText("This text should appear somewhere");
A.addView(tv);
my_root.addView(A);

但是那个 TextView 从来没有显示出来。

你能帮我吗?

4

4 回答 4

2

你的意思是这样吗?

LinearLayout container = (LinearLayout)findViewById(R.id.container);
View child = getLayoutInflater().inflate(R.layout.new_bucket, container);
container.addView(child);

请参阅文档

于 2013-03-14T10:33:01.837 回答
1
LinearLayout container = (LinearLayout)findViewById(R.id.container);  
View child = getLayoutInflater().inflate(R.layout.new_bucket, container, false);  
child.setId(0);  
container.addView(child);

if u want to inflate multiple layout use for loop for this.
于 2013-03-14T10:38:00.710 回答
1

layout activity_main.xml // 我为 LinearLayout 添加了一个 Id

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

此代码会将您的 new_bucket 添加到您的主 LinearLayout

 LinearLayout my_root = (LinearLayout) findViewById(R.id.container, null);
    LayoutInflater mInflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            View bucket= (View) mInflater.inflate(R.layout.new_bucket, null);
    my_root.addView(bucket);

希望这对你有用。

于 2013-03-14T10:59:20.133 回答
0

在这么多好人的帮助下,我设法做到了。

我没有改变主要问题的任何布局。

但是java代码现在是这样的:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    LinearLayout my_root = (LinearLayout) findViewById(R.id.container);
    LayoutInflater mInflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    View bucket= (View) mInflater.inflate(R.layout.new_bucket, null);
    my_root.addView(bucket);
}
于 2013-03-14T11:05:31.343 回答