现在,ActionBar
类中与导航模式相关的所有方法(例如setNavigationMode()
...)都已弃用。
文档说明:
Action bar navigation modes are deprecated and not supported by inline toolbar action bars. Consider using other common navigation patterns instead.
在我目前的应用程序中,ActionBar上有一个微调器。如何在新版本appcompat v7 21中的新窗口小部件工具栏上应用NAVIGATION_MODE_LIST
提前谢谢。
答案 0 :(得分:17)
使用API 21,方法setNavigationMode(ActionBar.NAVIGATION_MODE_LIST)
为deprecated。
使用微调器的最佳方法是使用这样的工具栏:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_actionbar"
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
android:background="?attr/colorPrimary">
<Spinner
android:id="@+id/spinner_toolbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.v7.widget.Toolbar>
您可以在Google IO 2014
中找到示例答案 1 :(得分:5)
像往常一样,Gabriele是对的,所以你的代码看起来像那样:
所以它看起来像那样:
private ActionBar actionBar;
private Toolbar toolbar;
private Spinner spinner;
private List<String> mNavigationItems;
private ArrayAdapter<CharSequence> mArrayAdapter;
/***
* Boolean to know which version is running
*/
private boolean postICS,postLollipop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nav_list);//find the toolbar
toolbar = (Toolbar) findViewById(R.id.toolbar);
postLollipop =getResources().getBoolean(R.bool.postLollipop);
if(postLollipop){
toolbar.setElevation(15);
}
//define the toolbar as the ActionBar
setSupportActionBar(toolbar);
actionBar=getSupportActionBar();
//now manage the spinner
mNavigationItems=new ArrayList<String>();
mNavigationItems.add("navigation 1");
mNavigationItems.add("nav 2");
mNavigationItems.add("navigation 3");
spinner= (Spinner) findViewById(R.id.action_bar_spinner);
mArrayAdapter = new ArrayAdapter(this, R.layout.actionbar_spinner_dropdown_item, mNavigationItems);
mArrayAdapter.setDropDownViewResource(R.layout.actionbar_spinner_dropdown_item);
spinner.setAdapter(mArrayAdapter);
}
请注意不要使用spinnerAdapter(因为您无法使用AppTheme管理其样式)。
如果您想使用Tab(NavigationMode.Tabs),您现在应该使用设计库(在此处解释:http://android-developers.blogspot.fr/2015/05/android-design-support-library.html?m=1)and复制粘贴下面 &#34;
标签通过标签在应用中的不同视图之间切换不是 材料设计的新概念,他们同样在家里作为顶级 级别导航模式或用于组织不同的分组 您应用中的内容(例如,不同类型的音乐)。
Design库的TabLayout实现了两个固定标签,其中 视图的宽度在所有选项卡之间平均分配,以及 可滚动选项卡,其中选项卡的大小不均匀并且可以滚动 水平。标签可以通过编程方式添加:
TabLayout tabLayout = ...; tabLayout.addTab(tabLayout.newTab()。setText(&#34; Tab 1&#34;));但是,如果你 您可以使用ViewPager在标签之间进行水平分页 直接从PagerAdapter的getPageTitle()创建标签然后 使用setupWithViewPager()将两者连接在一起。这确保了 选项卡选择事件更新ViewPager和页面更改更新 选中标签。
&#34;