Android兼容性上下文操作栏

Pau*_*aul 25 android actionbarsherlock contextual-action-bar

在尝试遵循Android设计指南时,我遇到了一个小小的困境.

我希望有一个项目列表,我可以长按几个(多选),然后对它们执行批量操作.

设计指南建议使用Contextual Action Bar,这听起来就像我想到的那样.问题是,我正在努力保持与API 7的兼容性(由于我的手机目前是2.3.3).

我正在使用ActionBarSherlock获取其他操作栏的东西,但我似乎无法弄清楚如何启动它以启动上下文操作栏,也没有弄清楚如何将任意按钮添加到ABS中的ActionBar.我看到你可以做标签,所以也许这就是答案,但是因为我试图允许多选,我不想拥有正常的模态上下文菜单.

sok*_*kie 22

这是一个迟到的答案,但我认为会帮助人们陷入困境.

打开上下文操作栏实际上非常简单,只需在您的活动中调用即可:

startActionMode(mActionModeCallback);
Run Code Online (Sandbox Code Playgroud)

如果您不在主要活动中,例如碎片,则可以参考

getSherlockActivity().startActionMode(mActionModeCallback);
Run Code Online (Sandbox Code Playgroud)

这是回调

private ActionMode.Callback mActionModeCallback = new ActionMode.Callback(){

    @Override 
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
          MenuInflater inflater = mode.getMenuInflater();
          inflater.inflate(R.menu.actionbar_context_menu, menu);
          return true;
        }

    @Override
    public void onDestroyActionMode(ActionMode mode) {

    }

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_item1:
                return true;
            case R.id.menu_item2:
                //close the action mode
                //mode.finish();
                return true;
            default:
                mode.finish();
                return false;
       }
    }
};
Run Code Online (Sandbox Code Playgroud)

xml是一个简单的菜单,如操作栏一:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/menu_item1"
      android:icon="@drawable/ic_item1"
      android:title="@string/ITEM1"
      android:showAsAction="always|withText" />

<item android:id="@+id/menu_item2"
      android:icon="@drawable/ic_item2"
      android:title="@string/ITEM2"
      android:showAsAction="always|withText" />
Run Code Online (Sandbox Code Playgroud)

  • 哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇!做得好 (2认同)

Rei*_*ier 16

设置上下文操作栏与设置"常规"ActionBar项目相同,就XML而言.开发人员指南中的这个例子解释了这一切.

为了使用ActionBarSherlock,将默认的Android回调替换为ActionBarSherlock编辑的回调(例如,代替Android.View.ActionMode,使用com.actionbarsherlock.view.ActionMode).

  • 你在使用ActionBarSherlock的v4.0吗?它上周退出了测试阶段. (2认同)