Как мне получить кнопки действий с пользовательскими макетами, которые будут оформлены как стандартные кнопки действий в Android 3.0

#android #android-layout #android-ui #android-actionbar

#android-layout #Android #android-actionbar

Вопрос:

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

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

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

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

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

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

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

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

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

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

Ответ №1:

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

 @android:style/Widget.ActionButton
  

но тогда вам также нужно сделать макет интерактивным:

 android:clickable="true"
  

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

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

Комментарии:

1. Куда вы включаете это: @android:style / Widget. actionButton

2. <YourLayout ... style="@android:style/Widget.ActionButton"> ... <YourLayout/>

3. Почему его программное использование не сработало для меня? Я пробовал это: ImageView syncImageView = new ImageView(getActivity(), null, android.R.стиль. Widget_ActionButton); . Я также попытался сделать его интерактивным и установить представление элемента действия как созданное мной представление: …setActionView(…) .