【问题标题】:Action mode bar pushing down the Toolbar下推工具栏的动作模式栏
【发布时间】:2015-12-04 19:09:36
【问题描述】:

在我的应用程序中,我正在使用官方文档中解释的工具栏(v7 appcompat 支持库,Theme.Appcompat.Light.NoActionBar, android.support.v7.widget.Toolbar, setSupportActionBar(myToolbar)): http://developer.android.com/training/appbar/index.html

我有一个ExpandableListView,我想在长按某个项目时实现上下文操作模式。为此,我使用: setMultiChoiceModeListener(new MultiChoiceModeListener())。 但是这样一来,动作模式栏显示在屏幕的顶部,向下推了工具栏(我认为是因为系统使用的是普通动作模式,而不是支持动作模式)。我希望它显示在工具栏上。

我试过这个解决方案:

windowActionBarOverlay = true

但它不起作用。

【问题讨论】:

标签: android android-actionbar toolbar actionmode


【解决方案1】:

我也遇到了这个问题。
您尝试的解决方案有点不对。

而不是<item name="windowActionBarOverlay">true</item>

尝试设置<item name="windowActionModeOverlay">true</item>

在您的应用程序的主题中。这将根据需要将操作模式栏覆盖在工具栏上。

【讨论】:

    【解决方案2】:

    您可以在适配器中使用此代码

     public boolean multiSelect = false;
    private ArrayList<String> selectedItems = new ArrayList<>();
    ActionMode modee;
    private ActionMode.Callback actionModeCallbacks = new ActionMode.Callback() {
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            multiSelect = true;
            menu.add("Delete");
            modee=mode;
            return true;
        }
    
        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }
    
        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            for (int i = 0; i < selectedItems.size(); i++) {
                for (int j = 0; j < sizeOfdata; j++) {
                    if (data.get(j).getFull_name() == selectedItems.get(i)) {
                        data.remove(j);
                        deleteContact(selectedItems.get(i));
                         //or your code 
                        break;
                    } else {
                        // continue;
                    }
                }
            }
            mode.finish();
            return true;
        }
    
        @Override
        public void onDestroyActionMode(ActionMode mode) {
            multiSelect = false;
            selectedItems.clear();
            notifyDataSetChanged();
        }
    };
    

    【讨论】:

      【解决方案3】:

      这对我有用... 如果您使用的是自定义工具栏,那么不要使用 android:theme="@style/Theme.Design.NoActionBar" 尝试从清单中删除默认工具栏

       <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">  
         <item name="windowActionBarOverlay">true</item>
       </style> 
      

      在样式中并从清单文件中删除该代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-17
        • 2015-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-23
        相关资源
        最近更新 更多