带Tab的ActionBar

时间:2015-09-08 04:14:47

标签: android android-actionbar

我无法在setNavigationMode(ActionBar.NAVIGATION_MODE_TABS)上使用ActionBar方法。我不明白为什么我的应用程序没有运行。 图书馆不支持吗?

actionBar.setNavigationMode.(ActionBar.NAVIGATION_MODE_TABS);

3 个答案:

答案 0 :(得分:0)

您应该使用设计支持库TabLayout https://developer.android.com/reference/android/support/design/widget/TabLayout.html。请参阅标签:

部分中的http://android-developers.blogspot.no/2015/05/android-design-support-library.html
  

标签   通过标签在应用程序中的不同视图之间切换并不是材料设计的新概念,它们同样适用于家庭作为顶级导航模式或用于在应用程序中组织不同的内容分组(例如,不同类型的音乐)。 p>      

Design库的TabLayout实现了两个固定标签,其中   视图的宽度在所有选项卡之间平均分配,以及   可滚动选项卡,其中选项卡的大小不均匀并且可以滚动   水平。标签可以通过编程方式添加:

 TabLayout tabLayout = ...;
 tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); 
  

但是,如果你   您可以使用ViewPager在标签之间进行水平分页   直接从PagerAdapter的getPageTitle()创建标签然后   使用setupWithViewPager()将两者连接在一起。这确保了   选项卡选择事件更新ViewPager和页面更改更新   选中标签。

答案 1 :(得分:0)

这是我的,你可以尝试一下。希望它有用。

首先,实现ActionBar.TabListener。

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {}

然后,在onCreate()中设置。

mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(adapter);
    mPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            getActionBar().setSelectedNavigationItem(position);
        }
    });

    mPager.setPageMargin(getResources().getDimensionPixelSize(R.dimen.page_margin));

    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    for (int position = 0; position < adapter.getCount(); position++) {
        getActionBar().addTab(getActionBar().newTab()
                .setText(adapter.getPageTitle(position))
                .setTabListener(this));
    }

    getActionBar().setDisplayShowHomeEnabled(false);
    getActionBar().setDisplayShowTitleEnabled(false);

覆盖其他,

@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    mPager.setCurrentItem(tab.getPosition());
}

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

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

答案 2 :(得分:-1)

我建议您使用此库,而不是操作栏导航模式。 PagerSlidingTabStrip

因为动作栏导航模式方法支持api level 14且大于14,但是这个库将支持android 2.3及更高版本。