0

約 5 ページの Sliding ViewPager があります。各レイアウトは次のように膨張します。

  public static class SectionFragment extends Fragment {
  ...
  @Override
  public View onCreateView(LayoutInflater inflater, ...) {
      ...
      rootView = inflater.inflate(R.layout.gridpage1,container,false);
      ...
  }

ここで、条件が真かどうかを確認し、はいの場合は、最初に gridpage1 レイアウトを膨張させ、次にその上に別のレイアウトを膨張させたいと考えています。

これどうやってするの?私が必要としているのは、2 つのビューを上下に膨らませる方法です。

4

2 に答える 2

0

メイン レイアウトでタグを使用して、<include />必要なビューを非表示/表示することができますsetVisibility(View.GONE/VISIBLE)。例えば:

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <include android:id="@+id/gridpage1_layout" layout="@layout/gridpage1"/>
    <include android:id="@+id/gridpage2_layout" layout="@layout/gridpage2"/>
...

</RelativeLayout>

Fragment では、ルート レイアウトのみをインフレートし、ID で他のビューを見つけることができます。

于 2013-07-21T08:24:33.933 に答える
0

ビューをインフレートするとは、基本的に、XML ファイルからビューを作成して返すことを意味します。

onCreateView特定のケースでは、関数からフラグメント コンテンツ ビューを返すだけです。これは単一のビューでなければならないため、条件が true で 2 つのビューが必要な場合は、次のようにします。

  1. FrameLayoutプログラムで自分でビューを作成する

    何かのようなもの:FrameLayout frameLayout = new FrameLayout(context);

  2. FrameLayout膨らませた後、最初のビューを追加します

    ビューをコンテナーに追加するように指示するため、 doframeLayout.addView(inflater.inflate(R.layout.gridpage1,frameLayout,false)); または eveninflater.inflate(R.layout.gridpage1,frameLayout,true);で十分です。true

  3. FrameLayout膨らませた後、2番目のビューを追加します

  4. あなたFrameLayoutからonCreateView

添加:

各ビューへの参照を保存する方法:

オプション1:

View v1 = inflater.inflate(R.layout.gridpage1,frameLayout,false);
this.v1Reference = v1;
frameLayout.addView(v1);

オプション 2:

inflater.inflate(R.layout.gridpage1,frameLayout,true);
this.v1Reference = frameLayout.findViewById(...);
于 2013-07-21T08:24:41.853 に答える