0

我有一个大约 5 页的滑动 ViewPager。每个布局都像这样膨胀:

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

现在我想检查一个条件是否为真,如果是,我想先填充 gridpage1 布局,然后在其上添加另一个布局。

我怎样才能做到这一点?我所需要的只是帮助将两个视图叠加在一起。

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函数返回片段内容视图。这必须是一个视图,因此如果您的条件为真并且您想要 2 个视图,请执行以下操作:

  1. FrameLayout以编程方式自己创建视图

    就像是:FrameLayout frameLayout = new FrameLayout(context);

  2. FrameLayout充气后将第一个视图添加到您的视图中

    frameLayout.addView(inflater.inflate(R.layout.gridpage1,frameLayout,false)); 或什至inflater.inflate(R.layout.gridpage1,frameLayout,true);就足够了,因为true告诉它将视图添加到容器中。

  3. FrameLayout充气后将第二个视图添加到您的

  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 回答