1

プログラムで生成された 2 つの画面と 2 つの xml レイアウトが必要です。今、私はその場でこれらのレイアウトを複数回組み合わせる必要があります。

たとえば、画面 1 - プログラムで作成、画面 2 - プログラムで作成、画面 3 - xml レイアウトから、画面 4 - xml レイアウトから

私の最終的なレイアウト設計は、screen1、screen2、screen 3、screen 4、screen 2... を含む単一の画面で、すべての画面が入力した画面の数に基づいて等しい画面スペースを共有する必要があります。アプローチを教えてください。一部の画面には相対的なレイアウトがあり、一部の画面には直線的なレイアウトがあります。したがって、これらを組み合わせる必要があります。

4

2 に答える 2

3

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();

于 2013-03-15T15:48:06.467 に答える
0

フラグメントを調べることができます。彼らはまさにあなたが必要とすることをしているようです。これらのトレーニングAPI ガイドへのリンクは次のとおりです。

xml ファイルでは、LinearLayout親内に 4 つの子レイアウトを指定し、それぞれに属性を指定しandroid:layout_weight="1"て、各子レイアウトが同じ量のスペースしか占有しないようにすることができます。縦向きの場合は、 と を設定することをお勧めします。これで、各子レイアウトの ID に id1、id2、id3 などのラベルを付けることができますが、作成する 2 つのレイアウトに と のようなラベルを付けることもandroid:layout_width="match_parentできます。Java コードでは、contentView を xml ファイルの ID として設定します (android:layout_height="0dp"android:id="@+id/fragment_container_firstandroid:id="@+id/fragment_container_second

setContentView(R.layout.myXMLLayout);)、上で提供したトレーニング ガイドのリンクに従って Fragment の 2 つのインスタンスを作成し、それらのビューを、以前に xml ファイル内でセットアップしたコンテナーに追加します(サポート ライブラリgetSupportFragmentManager().beginTransaction() .add(R.id.fragment_container_first, firstFragment).commit();getSupportFragmentManager().beginTransaction() .add(R.id.fragment_container_second, secondFragment).commit();使用している場合、これはトレーニング ガイドが使用します)。

これがお役に立てば幸いです。フラグメントを使用すると、非常に柔軟な UI を構築できます。たとえば、後で実行時に最初の 2 つのフラグメントを他のフラグメントに置き換えることができるため、柔軟性が向上します。さまざまな画面サイズに合わせてさまざまな UI をセットアップすることもできます。電話ではよりコンパクトなビューを使用できますが、タブレットのような大きな画面ではより多くの機能を提供できます。

これがあなたを助けたなら、私は戻って聞いてみたいです!

于 2013-03-16T16:14:40.373 に答える