3

我使用ActionMode来编辑某些内容,右侧的这三个按钮完成所有需要的操作,而左侧的后退/ home/up按钮变得多余。如何在ActionMode中禁用操作栏后退按钮

Screenshot, see that button on the left

这里的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; 
    } 
}; 

我试图使用回/家庭/向上按钮“取消”按钮,但似乎它的ID不android.R.id.home也没有R.id.home

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

+1

对此一看: http://stackoverflow.com/questions/11725729/prevent-to-cancel-action-mode-by-press-back-button – Pihu

+1

感谢您的信息,链接你给的是关于物理后退键。我试图实现的是禁用左上角的箭头(看看截图) –

+0

Priyanka Minhas你是对的,你可以发布它作为答案,所以我可以标记为正确的 –

回答

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

如需进一步信息:

Prevent to cancel Action Mode by press back button

0

这个答案是对我工作:

remove back/home button from action mode on long press in android

我添加这些行到我的styles.xml

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

我使用@color/colorAccent作为背景色为动作条中ActionMode。