0

我能够使用 androidhive 中的教程创建选项卡布。我想知道我是否可以在它上面放一个侧边标签。这只是我制作的一个样机。. 当您单击左侧的一个项目时,一个活动将显示在右侧。

我想知道我是否可以做到。非常感谢。

4

1 回答 1

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编写的代码中,如下所示:

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;
    }

}

这是输出

在此处输入图像描述

于 2013-10-08T09:30:05.507 回答