使用3个片段创建活动

时间:2014-10-28 09:42:40

标签: android android-layout android-activity android-studio

我目前有一个手机应用程序,它使用标签导航操作栏在三个片段之间导航。

我现在想创建一个相当于这个应用程序的平板电脑,但我不想使用动作栏,而是希望这三个片段彼此相邻。所以每个片段都会填满屏幕的1/3。

问题是,我无法弄清楚如何处理这个问题。我曾想过使用Android Studio的Design部分创建占位符,然后使用onCreate()方法通过膨胀其中的片段来填充这些占位符。但我仍然不知道如何处理这个问题。

有没有人有任何想法?

2 个答案:

答案 0 :(得分:3)

您可以制作3个占位符,每个占位符占据屏幕的三分之一,然后用碎片填充它们。当然,你必须只在平板电脑的布局中制作它们。

Fragment fragment1 = new FirstFragment();
Fragment fragment2 = new SecondFragment();
Fragment fragment3 = new ThirdFragment();

getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.placeholder1, fragment1)
    .replace(R.id.placeholder2, fragment2)
    .replace(R.id.placeholder3, fragment3)
    .commit();

编辑:布局示例

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

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

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

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

</LinearLayout>

答案 1 :(得分:1)

你使用onCreate()的想法很好。

基本上你需要的是一个ViewGroup类型的容器,然后使用FragmentTransactions来相应地添加它们。

考虑一下:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.yourlayout);         

    // Create fragments
    Fragment f0 = new Fragment0();
    Fragment f1 = new Fragment1();
    Fragment f2 = new Fragment2();

    // Add fragments
    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.add(R.id.container0, f0);
    ft.add(R.id.container1, f1);
    ft.add(R.id.container2, f2);
    ft.commit();
}

有关更多示例和背景信息,请参阅此处:http://www.survivingwithandroid.com/2013/04/android-fragment-transaction.html