2014-10-30 88 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; 
      } 
     });