创建侧面选项卡

时间:2013-10-08 09:14:37

标签: android tabs

我可以使用androidhive中的教程创建标签布局。我想知道我是否可以在其上放置侧面标签。 This is only a Mockup I made.。当您单击左侧的项目时,活动将显示在右侧。

我想知道我能不能做到。非常感谢你。

1 个答案:

答案 0 :(得分:1)

尝试按如下方式设计您的布局:

此处为fragment_top_rated.xml文件代码:

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

    <LinearLayout
        android:id="@+id/passenger"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="2dp"
        android:orientation="horizontal" 
        android:weightSum="1">

        <FrameLayout
            android:id="@+id/frameLayout1"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight=".4"
            android:background="@android:color/background_dark" >
        </FrameLayout>

        <FrameLayout
            android:id="@+id/frameLayout2"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight=".6"
            android:background="@android:color/darker_gray" >
        </FrameLayout>
    </LinearLayout>

</RelativeLayout>

您可以在选项卡上加载此屏幕,然后单击其中的片段。

<强>编辑:

假设您开发的项目与问题链接的定义演示完全相同。

在Tabactivity中,当您选择“地点”选项卡时,会在左侧加载“地点片段”。 它在选项卡上的链接中定义,您只需加载片段。

<强> PlacesFragment

PlacesFragment编写代码中,如下所示:

public class PlacesFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_top_rated,
                container, false);
        FragmentManager fm = getFragmentManager();
        FragmentTransaction ft1 = fm.beginTransaction();
        Fragment m_fragSet = new GamesFragment();
        ft1.replace(R.id.frameLayout2, m_fragSet);
        ft1.commit();

        FragmentManager fmg = getFragmentManager();
        FragmentTransaction ftrans = fmg.beginTransaction();
        Fragment m_frag = new MoviesFragment();
        ftrans.replace(R.id.frameLayout1, m_frag);
        ftrans.commit();
        return rootView;
    }
}

创建右侧片段游戏

public class GamesFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_games, container, false);

        return rootView;
    }
}

这是 MoviesFragment.java

public class MoviesFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_movies, container, false);

        return rootView;
    }

}

TabsAdapter 中定义如下:

public class TabsPagerAdapter extends FragmentPagerAdapter {

    FragmentActivity context;
    public TabsPagerAdapter(FragmentManager fm,FragmentActivity act) {
        super(fm);
        context=act;
    }

    @Override
    public Fragment getItem(int index) {

        switch (index) {
        case 0:
            // Top Rated fragment activity
            return new TopRatedFragment();
        case 1:
            // Games fragment activity
            return new GamesFragment();
        case 2:
            // Movies fragment activity
            return new MoviesFragment();
        }


        return null;
    }

    @Override
    public int getCount() {
        // get item count - equal to number of tabs
        return 3;
    }

}

这是输出

enter image description here