Fragment 中的 Android 选项卡布局

标签 android android-fragments android-tabs

我有一个带有抽屉导航的主 Activity,我正在尝试实现像 Play Music App 这样带有标签的布局。

MainActivity 有一个像容器一样的 FrameLayout:

<FrameLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

我想在@+id/container 中放入一个带标签的 fragment 。

最好的方法是什么?

我想我可以创建一个扩展 Fragment 并实现 TabListener 的 MyFragment。 相关的布局可能是这样的

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</android.support.v4.view.ViewPager>

但是我该如何继续呢?

最佳答案

尝试按照以下步骤操作:

  • 首先,创建您的 Activity 并扩展 FragmentActivity 并实现 TabListener
  • 其次,创建您的 TabsPagerAdapter
  • 第三,创建您的 fragment (如果需要多个 fragment ,则创建 fragment )。
  • 请求导航模式为选项卡后,您可以在 Activity 中设置适配器。

代码示例

public class SampleActivity extends FragmentActivity implements ActionBar.TabListener {

    private ViewPager viewPager;
    private ActionBar actionBar;
    private TabsPagerAdapter mAdapter;


    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_ACTION_BAR);
        setContentView(R.layout.gd_pager);

        getActionBar().setDisplayHomeAsUpEnabled(true);

        viewPager = (ViewPager) findViewById(R.id.pager);
        actionBar = getActionBar();

        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        String [] tabs = new String[]{"Tab1", "Tab2", "Tab3", "Tab3"};

        for(String tab : tabs)
        {

           actionBar.addTab(actionBar.newTab()
                .setText(tab)
                .setTabListener(this));
        }

        mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
        viewPager.setAdapter(mAdapter);


       @Override
       public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft)
       {
           viewPager.setCurrentItem(tab.getPosition());

         viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener()
         {

             @Override
             public void onPageSelected(int position)
             {
                 actionBar.setSelectedNavigationItem(position);
             }

             @Override
             public void onPageScrolled(int arg0, float arg1, int arg2)
             {
             }

             @Override
             public void onPageScrollStateChanged(int arg0)
             {
             }
        });
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {

    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

   }
}

关于Fragment 中的 Android 选项卡布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25476369/

相关文章:

android - BlackBerry API 等同于 Android 的 Toast?

java - 返回第一个 View / Root View 的内容

android - React native - 确保你的包被正确打包或者你正在运行打包服务器 Release模式

android - 如何为 RecyclerView 膨胀 ViewHolder 内部的 View

安卓动态字符串 : %1d vs %1$d

android - 单击它时,多个 PlaceAutoCompleteFragment 会很快打开

android - 如何始终在 RowsFragment 中显示标题

android - Fab 不可点击

android - 如何设置 android Horizo​​ntalScrollView 从右到左的行为(默认从右侧选择选项卡,而不是左侧)

android 在 tabbedActivity 中禁用/启用选项卡