addView()
プライマリ レイアウトで呼び出す必要があります。プライマリ レイアウト (他のすべてのレイアウトを保持する) が構築されると、addView()
メソッドは新しいビューを既存のプライマリ レイアウトに追加します。
新しいレイアウトを追加するには、最初にインフレートする必要があります。
LinearLayout primaryLayout;
LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
LinearLayout newLayout = (LinearLayout)layoutInflater.inflate(R.layout.your_new_layout, null, false);
primaryLayout.addView(newLayout);
AddView には、プライマリ レイアウトの特定のポイントに新しいレイアウトを配置するためのインデックス オプションも用意されています。
空白の XML レイアウト (primary_layout など) から始めてみてください。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/primaryLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</RelativeLayout>
次に、アクティビティが開始したら、最初にそれを設定してから、必要に応じて膨らませて追加します。
setContentView(R.layout.primary_layout);
LinearLayout primaryLayout = (LinearLayout) findViewById(R.id.primaryLayout);
次に、新しいビューをそのビューに追加できます。複数回の追加に関しては、参照によって行われると思われるため、単一のビューしか表示されません。メソッドでビューを構築し、ビューを返すだけにしてください。そのような:
private View buildNewView(){
LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
LinearLayout newView = (LinearLayout)layoutInflater.inflate( R.layout.my_new_view null, false );
return newView ;
}
そして、それを経由して呼び出しますprimaryLayout.addView(buildNewView();
。