2014-10-30 87 views
7

有人知道从Android 5.0中删除狭窄功能时拆分操作栏吗?看来它对布局不再有任何影响。Android 5.0(棒棒糖)上的拆分操作栏

+5

您提供一个底部和顶部的工具栏现在,而不是系统 – tyczj 2014-10-30 18:24:21

+0

我们如何向后兼容性做到这一点?当taget SDK是21并且appcompat库也在21级时,系统拆分actionBar,但是我看到所有的操作项都塞满了顶部,底部有一个空白色条。 – iTapAndroid 2014-11-10 23:01:40

+2

据我所见,你需要实现一个你放在底部的工具栏。不应该是一个大问题。由于时间太少,我还无法弄清楚什么是均匀分布在操作栏上的图标。 – Florian 2014-11-11 17:21:48

回答

3

就像说你不能拆分操作栏,尽管你可以通过工具栏获得更好的结果。

Toolbar toolbarBottom = (Toolbar) findViewById(R.id.toolbar_bottom); 
    toolbarBottom.inflateMenu(R.menu.menu_bottom); 
    toolbarBottom.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { 
     @Override 
     public boolean onMenuItemClick(MenuItem menuItem) { 
      //your code 
      return false; 
     } 
    }); 

可以说,此功能与程序兼容性支持

compile "com.android.support:appcompat-v7:21.0.+" 

您还需要申报工具栏在布局向后兼容是非常重要的。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<android.support.v7.widget.Toolbar xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:minHeight="?attr/actionBarSize" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar_bottom" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:background="?attr/colorPrimary" 
    android:minHeight="?attr/actionBarSize"/> 

    <LinearLayout 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingTop="?attr/actionBarSize" 
    android:layout_above="@id/toolbar" 
    android:layout_below="@id/toolbar_bottom" /> 
</LinearLayout> 

0

像其他的答案,你可以从编码创建菜单的XML文件你自己吧,或者直接。
工具栏不会始终设置两个或多个项目,但您可以强制工具栏显示动作按钮始终可见,并且溢出动作将自动创建选项菜单。
其他基本自定义可以通过xml文件完成。
代码:

final Toolbar lowerTool=(Toolbar)findViewById(R.id.lower_toolbar); 
     lowerTool.inflateMenu(R.menu.lower_toolbar_menu); 
     lowerTool.getMenu().findItem(com.tvf.emag.R.id.action_previous).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT| MenuItem.SHOW_AS_ACTION_IF_ROOM); 
     lowerTool.getMenu().findItem(com.tvf.emag.R.id.action_previous).setEnabled(mPager.getCurrentItem() > 0); 
     lowerTool.getMenu().add(Menu.NONE, com.tvf.emag.R.id.action_next, Menu.NONE, 
       (mPager.getCurrentItem() == mPagerAdapter.getCount() - 1) 
         ? com.tvf.emag.R.string.action_finish 
         : com.tvf.emag.R.string.action_next); 
     lowerTool.getMenu().findItem(com.tvf.emag.R.id.action_next).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT| MenuItem.SHOW_AS_ACTION_IF_ROOM); 
     lowerTool.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { 
      @Override 
      public boolean onMenuItemClick(MenuItem menuItem) { 
       switch (menuItem.getItemId()) { 
        case com.tvf.emag.R.id.action_previous: 
         mPager.setCurrentItem(mPager.getCurrentItem() - 1); 
         return true; 
        case com.tvf.emag.R.id.action_next: 
         mPager.setCurrentItem(mPager.getCurrentItem() + 1); 
         return true; 
       } 
       return true; 
      } 
     });