如何在工具栏上设置NAVIGATION_MODE_LIST new appcompat v7 21

时间:2014-10-29 07:45:38

标签: android android-actionbar android-notifications android-appcompat material-design

现在,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 提前谢谢。

2 个答案:

答案 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;