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のメインレイアウトにいくつかの「インスタンス」をプログラムで追加することです。これらのインスタンスは、のLinearLayout内に表示されますactivity_main.xml

私は今少し立ち往生しています。TextViewをに追加しようとしましたが、それをactivity_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 に答える