【问题标题】:Split action bar on Android 5.0 (Lollipop)Android 5.0 (Lollipop) 上的拆分操作栏
【发布时间】:2014-10-30 18:20:48
【问题描述】:

有没有人知道从 Android 5.0 中删除窄功能时的拆分操作栏?好像对布局没有任何影响了。

【问题讨论】:

  • 您现在提供底部和顶部工具栏,而不是系统
  • 我们如何做到这一点以实现向后兼容性?当 taget SDK 为 21 且 appcompat 库也为 21 级时,系统会拆分 actionBar,但我看到所有操作项都挤在顶部,底部有一个空的白色条带。
  • 据我所见,您需要实现一个放置在底部的工具栏。应该不是什么大问题。由于时间太少,我还没有弄清楚如何将图标均匀分布在操作栏上。

标签: android android-actionbar


【解决方案1】:

因为这个问题之前没有真正回答过......

有人知道在 Android 5.0 中删除窄功能时是否拆分操作栏?

是的,it was,尽管that change is not documented 在问题跟踪器条目本身之外。

【讨论】:

    【解决方案2】:

    如前所述,您不能拆分操作栏,尽管您可以使用工具栏获得更好的结果。

       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.+"
    

    您还需要在布局中声明工具栏

    <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> 
    

    【讨论】:

      【解决方案3】:

      与其他答案一样,您可以使用菜单 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;
                  }
              });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-13
        • 1970-01-01
        • 1970-01-01
        • 2014-12-25
        • 1970-01-01
        • 1970-01-01
        • 2014-12-16
        • 1970-01-01
        相关资源
        最近更新 更多