如何在ActionMode中禁用ActionBar的返回按钮

3
我使用ActionMode编辑一些内容,右侧的三个按钮可以完成所有必要的操作,左侧的后退/主页/上一步按钮变得多余。 截图,请注意左侧的按钮 这是ActionMode。
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.editormenu, menu);
        return true;
    }
    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false;
    }
    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_cancel:
                selectedView.onCancelEditing();
                selectedView.enableEditMode(selectedView,false);
                mode.finish(); 
                return true;
            case R.id.action_remove:
                selectedView.enableEditMode(selectedView,false);
                relContainer.removeView(selectedView);
                mode.finish();
                return true;
            case R.id.action_done:
                selectedView.enableEditMode(selectedView,false);
                mode.finish();
                return true;
            default:
                return false;
        }
    }
    @Override
    public void onDestroyActionMode(ActionMode mode) {
        mActionMode = null;
    }
};

我曾试图将返回/主页/上一级按钮用作“取消”按钮,但似乎它的标识不是android.R.id.home或R.id.home。

所以问题是:如何删除/禁用此按钮,或者如何使用它?


1
请看这个链接:https://dev59.com/0mgt5IYBdhLWcg3w5xg_ - Pihu
1
谢谢提供信息,你给的链接是关于物理返回键的。我想要实现的是禁用左上角的箭头(请看截图)。 - Nursultan Talapbekov
Priyanka Minhas,你是对的,能否把它发布为答案,这样我就可以标记它为正确的。 - Nursultan Talapbekov
2个回答

2

只需调用dispatchKeyEvent方法并对其执行操作即可: 请查看以下示例:

@Override 
public boolean dispatchKeyEvent(KeyEvent event) {
    if(mActionModeIsActive) { 
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
           // handle your back button code here 
           return true; // consumes the back key event - ActionMode is not finished 
        } 
    } 
    return super.dispatchKeyEvent(event);
} 

更多信息请参见:

如何防止按下返回按钮取消操作模式


1
这是我用过的解决方法:
在长按 Android 上的操作模式时,我将以下行添加到我的 styles.xml 文件中:

从 Android 操作模式中删除返回/主页按钮

 <item name="actionModeCloseDrawable">@color/colorAccent</item>
 <item name="actionModeCloseButtonStyle">@style/Widget.AppCompat.ActionMode</item>
 <item name="actionModeBackground">@color/colorAccent</item>

我正在使用@color/colorAccent作为ActionMode中ActionBar的背景颜色。

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