0

我有如下布局。它包含一些TextView 和ImageView。下面我想添加一个 ListFragment。

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Name: "
        android:id="@+id/textView"
        android:layout_gravity="left|center_vertical" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/name"
        android:layout_toRightOf="@+id/textView"
        android:layout_gravity="left"
        android:text="Large Text" />
...
    <fragment android:id="@+id/list"
        android:layout_below="@id/name"
        class="com.snot.bodyweightworkout.ExerciseListFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

现在我正在使用下面的代码添加我的 ListFragment。但我想添加它,如上图所示。我猜我会以同样的方式添加它,但我应该在布局中使用什么元素作为容器?

FragmentManager fm = getSupportFragmentManager();
if (fm.findFragmentById(android.R.id.content) == null) {
    ProgramListFragment list = new ProgramListFragment();
    fm.beginTransaction().add(android.R.id.content, list).commit();
}

关于如何内联添加它的任何建议?

4

1 回答 1

1

查看文档 http://developer.android.com/guide/components/fragments.html

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

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Name: "
    android:id="@+id/textView"
    android:layout_gravity="left|center_vertical" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:id="@+id/name"
    android:layout_toRightOf="@+id/textView"
    android:layout_gravity="left"
    android:text="Large Text" />

<fragment android:name="com.example.news.ArticleListFragment"
        android:id="@+id/list"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent" />

</RelativeLayout>

那么当你想得到片段时,你所要做的就是

FragmentManager fm = getSupportFragmentManager();
ProgramListFragment plf = (ProgramListFragment)fm.findFragmentById(r.id.myfragment);

您也可以FrameLayout用 xml 中的片段替换,只需替换框架中的视图

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

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Name: "
    android:id="@+id/textView"
    android:layout_gravity="left|center_vertical" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:id="@+id/name"
    android:layout_toRightOf="@+id/textView"
    android:layout_gravity="left"
    android:text="Large Text" />

<FrameLayout
        android:id="@+id/list"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent" />

</RelativeLayout>

然后你基本上可以做你已经在做的事情,除了你想要的添加replace

FragmentManager fm = getSupportFragmentManager();
ProgramListFragment list = new ProgramListFragment();
fm.beginTransaction().replace(R.id.list, list).commit();
于 2013-09-12T20:48:12.410 回答