我正在使用Android 4+应用,该应用使用ActionBar标签来导航android.support.v4.view.ViewPager
。这种方法很好,除非在安装后第一次启动应用程序。在这种情况下,选项卡将显示为下拉列表。
这是MainActivity的布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
style="@style/NavigationDrawerListView" />
<ListView
android:id="@+id/right_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="end"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
style="@style/ShortcutsListView" />
</android.support.v4.widget.DrawerLayout>
使用init代码MainActivity.java
protected void onCreate(Bundle savedInstanceState) {
...
// TabBar
sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
viewPager = (ViewPager)findViewById(R.id.pager);
viewPager.setAdapter(sectionsPagerAdapter);
currentPageIndex = (savedInstanceState != null ? savedInstanceState.getInt(CURRENT_PAGE_INDEX_KEY, -1) : -1 );
viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
getActionBar().setSelectedNavigationItem(position);
updateCurrentPageIndex(position);
}
});
// ActionBar
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
public void onTabSelected(Tab tab, android.app.FragmentTransaction arg1) {
viewPager.setCurrentItem(tab.getPosition());
}
public void onTabReselected(Tab arg0, android.app.FragmentTransaction arg1) { }
public void onTabUnselected(Tab arg0, android.app.FragmentTransaction arg1) { }
};
actionBar.addTab(actionBar.newTab()
.setText(R.string.MainPageTitle)
.setTabListener(tabListener));
actionBar.addTab(actionBar.newTab()
.setText(R.string.ContactsPageTitle)
.setTabListener(tabListener));
actionBar.addTab(actionBar.newTab()
.setText(R.string.SettingsPageTitle)
.setTabListener(tabListener));
actionBar.addTab(actionBar.newTab()
.setText(R.string.MessagePageTitle)
.setTabListener(tabListener));
// http://stackoverflow.com/questions/14672984/
// Set NavigationMode AFTER alle tabs have been added
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
...
}
据我所知,第一次发射确实是唯一的区别。但我不知道这会如何影响标签。
任何想法如何总是使用标签而永远不会下拉列表?
答案 0 :(得分:1)
任何想法如何总是使用标签而永远不会下拉列表?
首先,一年前不推荐使用操作栏标签。
其次,you have never had control whether action bar tabs show up as tabs versus a drop-down list。
我建议您使用其他一些标签解决方案,无论是SDK的设计支持库中的TabLayout
,third-party tabs associated with a ViewPager
,FragmentTabHost
等等。
答案 1 :(得分:0)