是否有可能在一个活动xml中有两个片段xml?

时间:2015-07-26 07:45:33

标签: java android xml android-fragments

我正在尝试创建一个包含标题片段xml和底部视图片段xml的欢迎活动,其中包含要登录的按钮。任何人都可以帮助我如何将这两个片段xml放到我的activity_main.xml

这是我的header.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="220dp">

    <ImageView
        android:id="@android:id/background"
        android:layout_width="match_parent"
        android:layout_height="220dp"
        android:scaleType="centerCrop"
        android:src="@drawable/header_bg" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_gravity="bottom|right|end"
        android:layout_marginStart="@dimen/android_spaces_large"
        android:layout_marginEnd="@dimen/android_spaces_large"
        android:layout_marginLeft="@dimen/android_spaces_large"
        android:layout_marginRight="@dimen/android_spaces_large"
        android:layout_marginBottom="@dimen/android_spaces">

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/header_title"
            style="@style/Header.TitleText" />

        <TextView
            android:id="@+id/subtitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/header_subtitle"
            style="@style/Header.SubTitleText" />

    </LinearLayout>

    <View
        android:id="@android:id/title"
        android:layout_width="wrap_content"
        android:layout_height="?android:actionBarSize"
        android:background="@layout/header_ab_shadow" />



</FrameLayout>

我的fragment_bottomview.xml只包含一个按钮。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button"
        android:layout_gravity="center_horizontal" />
</LinearLayout>

我的activity_main.xml看起来像这样

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.windows81.welcomingwithheader.MainActivity"
    tools:ignore="MergeRootFrame" />

我不知道我缺少什么,或者我做错了,任何教程链接都会对我有所帮助。

1 个答案:

答案 0 :(得分:0)

只创建两个新类,让我们称之为FragmentA和FragmentB,两者都应该扩展片段

为fragmentA和fragmentB重写onCreateView,并将其视图设置为xml到header.xml和fragment_bottomview.xml,如下所示

  public class FragmentA extends Fragment {

 @Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle   
savedInstanceState) {
    View view=inflater.inflate(R.layout.header,container,false);

    return view;
}


}


public class FragmentB extends Fragment {

 @Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle   
savedInstanceState) {
    View view; 
    view=inflater.inflate(R.layout.fragment_bottomview,container,false);

    return view;
}


}

现在将FragmentA和FragmentB添加到您的活动中,将此代码放入您的oncreate活动方法

    FragmentA fragmentA=new FragmentA();
    FragmentManager manager=getFragmentManager();
    FragmentTransaction trans=manager.beginTransaction();
    trans.add(R.id.container,fragmentA,"fragmenta");/*adding fragment into 
                                                       the 
                                                 framelayout with id   
                                                container*/
   FragmentB fragmentB=new FragmentB();
   trans.add(R.id.container,fragmentB,"fragmentb");/*adding fragment into 
                                                  the 
                                                 framelayout with id   
                                                container*/

    trans.commit();

你可能应该使用相对布局而不是framelayout