Как заставить кнопки действий с пользовательскими макетами стилизоваться под стандартные кнопки действий в Android 3.0+ - PullRequest
4 голосов
/ 02 ноября 2011

У меня небольшие проблемы с пользовательскими кнопками действий в панели действий «Сота +». Я добавляю пункт меню, который использует пользовательский макет (используя атрибут android: actionLayout). Причина пользовательского макета заключается в том, что мне нужна кнопка с двумя строками текста, которые можно динамически обновлять.

Однако я все еще хочу, чтобы эта кнопка действия работала как другие стандартные кнопки. Под этим я подразумеваю, что при выборе кнопки фон исчезает и снова исчезает, если она не выбрана, все в стиле платформы (кажется, что цвет отличается для разных платформ / устройств - я видел серый и синие версии)

Я пытался использовать стиль кнопки действия для пользовательского макета:

style="@android:style/Widget.ActionButton"

и я попытался установить фон для пользовательского макета:

android:background="?android:attr/actionBarItemBackground"

но безрезультатно, и я пытаюсь делать это довольно случайно, поскольку не могу найти никакой документации о том, как это сделать (или, если действительно, это вообще возможно).

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

У кого-нибудь есть идеи?

Заранее спасибо!

1 Ответ

14 голосов
/ 02 ноября 2011

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

@android:style/Widget.ActionButton

, но затем вам также нужно сделать макет кликабельным:

android:clickable="true"

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

Надеюсь, это поможет кому-то попытаться это сделать!

...