Intereting Posts
Android – Ошибка в памяти. Когда он работает на реальном устройстве Android – .nomedia не работает для изображений Android: как создать экземпляр моего настраиваемого представления с помощью конструктора атрибутов Какова эквивалентность iOS для Android RelativeLayout / LinearLayout? Круглый буфер со звуковым сопровождением для Android Отображение видеопотока gstreamer в Google Картон SurfaceTexture Все библиотеки com.android.support должны использовать ту же самую версию Android Как проверить успешную установку регистрации сбоев ACRA Android.os.deadobjectexception в сервисе android Получить настройку NuPlayer на Android 5.0 Измените сгенерированное имя apk из "app-debug.apk" Android – функция обратного вызова для обработки аварий Как распечатать APK через командную строку в Windows Как автоматически прокручиваться до поля ввода в Android, когда мягкая клавиатура накладывается на них при показе? Список выбора отключен в AutoCompleteTextView в диалоге

Как работает стилизация библиотеки appcompat

Я довольно смущен тем, как работает стилизация в библиотеке appcompat.

Согласно здесь :

Теперь мы используем поддержку поддержки Toolbar / ActionBar на всех платформах, что означает, что мы больше не читаем никаких андроидов: атрибуты, связанные с панелью действий.

Для приложений, которые уже имеют существующие настройки appcompat, это означает, что вы должны удалить темы v14 +, которые повторно устанавливают те же значения в пространстве имен android. Обратите внимание, что это ТОЛЬКО применимо к стилям / виджетам, которые влияют на панель действий.

Для большинства приложений вам требуется только одно объявление темы, в значениях /

Вот мой вопрос:

Если я хочу использовать материальную конструкцию ActionBar в API 14+, я могу просто использовать ActionBar / Toolbar, представленную в appcompat_v7, и стирать ее в общей папке значения / с удалением пространства имен «android:»? Но почему я вижу людей, пишущих код ниже:

<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar"> .... <item name="windowContentOverlay">@null</item> <item name="android:windowContentOverlay">@null</item> .... </style> 

Почему существует пространство имен «android:»? В чем разница между приведенным выше кодом и использованием значений-v21, value-v14, папок?

Может кто-нибудь объяснить или направить меня к правильному источнику?

Да, если вы используете AppCompat v21 +, вам нужна только одна тема с родителем Theme.AppCompat (или Theme.AppCompat.Light такой как Theme.AppCompat.Light ), и вам не нужны атрибуты android: namespace для флагов Action bar / window , А также отдельные темы для v14, v20 и т. Д. Полный список атрибутов верхнего уровня, которые AppCompat предоставляет на всех уровнях API, можно найти в AppCompat R.styleable Theme .

Большая часть кода в Интернете (включая части сайта developer.android.com) все еще написана для pre-v21 AppCompat, для чего требуются и android: и не префиксные версии.