在ActionBarSherlock中使用自定义布局构buildActionMode

我刚开始使用ActionBarSherlock来build立一些简单的应用程序,在我的第一个屏幕我有简单的列表,我添加了新的菜单项添加到列表中的新项目:

MenuItem newItem = menu.add("New"); newItem.setIcon(R.drawable.ic_compose_inverse) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

现在当用户select添加一个新项目时,我想要启动一个新的添加新项目的动作模式,这个动作模式应该包含一个带有文本框和button的简单布局,所以我创build了这个布局:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText android:id="@+id/text" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:inputType="text" > </EditText> <Button android:id="@+id/addBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/add" /> </LinearLayout> 

所以现在我只需要在新的动作模式下将这个布局设置为条形:

 newItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { actionMode = startActionMode(new MyAction(ListEditor.this)); return true; } }); 

并在我的行动:

 private final class MyAction implements ActionMode.Callback { ... @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { View customNav = LayoutInflater.from(context).inflate(R.layout.add_item, null); getSupportActionBar().setCustomView(customNav); getSupportActionBar().setDisplayShowCustomEnabled(true); return true; } } 

所以基本上我需要从sherlock例子中的ActionModes和CustomNavigation之间的东西,但问题是,它将布局设置到主栏,而不是打开为行动的新酒吧。

有什么build议么?

  • 将项目导入Android Studio有关ActionBarSherlock的问题
  • 在覆盖层的操作栏下方定位视图
  • 更改每个选项卡在Android上滑动的操作栏标题
  • 当从返回堆栈返回布局时,如何刷新我的ListFragment?
  • 如何在Android中设置ActionaBar标签文本?
  • 无法parsingLandroid / support / v4 / app / FragmentActivity的超类
  • ActionBarSherlock for Mono for Android的jar-Binding
  • 在android项目和库中使用支持库(Android Studio)
  • 您可能想要在ActionMode类中使用名为“setCustomView”的方法。

    所以像这样的东西:

     newItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { actionMode = startActionMode(new MyAction(ListEditor.this)); actionMode.setCustomView(customNav); return true; } });