App: showAsAction vs android: showAsAction

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

У меня есть пакет "приложение" и используйте app:showAsAction="always". Не отображается ошибка, но на панели нет кнопки. Когда я меняю его на android:showAsAction="always", на панели появляется кнопка, но AndroidStudio говорит мне, что я должен пойти для "app: showAsAction с помощью appCompat...".

У меня есть пользовательская тема с parent="@android:style/Theme.Holo.Light.DarkActionBar"> и для самой панели: parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">.

Должен ли я что-то изменить и заставить работать app:showAsAction или игнорировать сообщение об ошибке AndroidStudio и перейти на android:showAsAction?

Ответ 1

Это документация правила lint:

AppCompatResource

Сводка: пространство имен в меню

Приоритет: 5/10

Тяжесть: ошибка

Категория: Юзабилити

При использовании библиотеки appcompat ресурсы меню должны ссылаться на showAsAction в приложении: пространство имен, а не пространство android: namespace.

Аналогично, если вы не используете библиотеку appcompat, вы должны использовать android: showAsAction.

Я думаю, проблема в том, что вы смешиваете меню Framework Activity и AppCompat.

Вы должны использовать AppCompatActivity с панелью действий AppCompat и app:showAsAction; или Activity с помощью android:showAsAction.