Android 5.0(棒棒糖)上如何拆分操作栏

7

请问有没有人知道在Android 5.0中是否已删除了狭窄模式下的分割操作栏功能?看起来它似乎不再对布局产生任何影响。


5
现在你提供了底部和顶部的工具栏,而不是系统默认的。 - tyczj
我们如何实现向后兼容?当目标SDK为21且appcompat库也在21级时,系统会分割actionBar,但我看到所有操作项都挤在顶部,底部有一个空白的白色条纹。 - iTapAndroid
2
据我所见,您需要实现一个放置在底部的工具栏。这不应该是一个大问题。但是因为时间太少,我还没有弄清楚如何均匀分布操作栏上的图标。 - Florian
3个回答

9

由于此问题之前没有得到真正的回答...

有人知道 Android 5.0 是否已删除了窄屏幕下分割的操作栏功能吗?

是的,已经删除了,虽然 这一变更 在问题跟踪器条目之外并未记录。


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;
        }
    });

重要的是要说明,此功能与appcompat支持向后兼容。

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

您还需要在布局中声明工具栏(toolbar)
<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;
            }
        });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接