При попытке следуя рекомендациям по дизайну Android, я нахожусь в небольшом затруднительном положении.
Я хочу иметь список элементов, на некоторых из которых я могу долго нажимать (множественный выбор), а затем выполнять с ними массовые действия.
] В рекомендациях по дизайну предлагается использовать для этого контекстную панель действий, и это совершенно похоже на то, что я имел в виду. Проблема в том, что я пытаюсь сохранить обратную совместимость с API 7 (из-за того, что мой телефон имеет версию 2.3.3 cur арендная плата).
Я использую ActionBarSherlock , чтобы получить другие элементы панели действий, но я не могу понять, как заставить его запускать контекстную панель действий, и я не понял, как добавить кнопки произвольно на ActionBar в ABS. Я вижу, что вы можете делать вкладки, так что, возможно, это ответ, но поскольку я пытаюсь разрешить множественный выбор, я не хочу иметь обычное модальное контекстное меню.
Настройка контекстной панели действий аналогична настройке «обычных» элементов ActionBar в том, что касается XML. Этот пример в руководстве разработчика объясняет все это .
Чтобы использовать ActionBarSherlock, замените обратные вызовы Android по умолчанию на отредактированные обратные вызовы ActionBarSherlock (например, вместо Android.View.ActionMode
используйте com.actionbarsherlock.view.ActionMode
).
ActionBarSherlock имеет собственную реализацию ActionMode, но вам придется вручную управлять его жизненным циклом, я написал об этом руководство .
Я столкнулся с той же проблемой. Это было решено, когда я нашел эту ссылку . По сути, вы должны создать класс обратного вызова, который реализует ActionMode.Callback
. В этом классе вы надуваете панель действий своей контекстной панелью действий. При каждом выборе (или длительном щелчке) вы запускаете обратный вызов, используя метод startActionMode
. См. Ссылку для рабочего кода =]
РЕДАКТИРОВАТЬ: Есть также пример на образцах Шерлока под /samples/demos/src/com/actionbarsherlock/sample/demos/ActionModes.java
Для более длинного клика пройдите по ссылкам ниже. Первый - это Java-код, необходимый для примера. Во-вторых, как определить макет: