Вопрос по android – Сборка ActionMode с пользовательским макетом в ActionBarSherlock

7

Я только начал использовать ActionBarSherlock для создания простого приложения, на моем первом экране у меня есть простой список, и я добавил новый пункт меню для добавления нового элемента в список:

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

Теперь, когда пользователь решает добавить новый элемент, я хочу запустить новый режим действия для добавления нового элемента, этот режим действия должен содержать простой макет с текстовым полем и кнопкой, поэтому я создал этот макет:

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

So basically I need something between ActionModes and CustomNavigation from the sherlock example, but the problem is that it set the layout to the main bar and not for the new bar that open in for action.

какие-либо предложения?

Ваш Ответ

1   ответ
9

Возможно, вы захотите использовать метод в классе ActionMode с именем & quot; setCustomView & quot; ,

так как то так:

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

Похожие вопросы