在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议么?

Solutions Collecting From Web of "在ActionBarSherlock中使用自定义布局构buildActionMode"

您可能想要在ActionMode类中使用名为“setCustomView”的方法。

所以像这样的东西:

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