2016-05-31 4 views
1

Я пытаюсь настроить панель инструментов с помощью библиотеки поддержки. при настройке android: тема отлично работает на API21 +, более низкие API, похоже, полностью игнорируют его.Android: тема не влияет на старых Apis

вот мой XML:

<android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 
</android.support.design.widget.AppBarLayout> 

android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" делает панель инструментов имеют белые иконки в API21 +, иконки остаются черными на старых устройствах.

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

ответ

2

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

поэтому я убедился:

setContentView(R.layout.main); 

приходит после того, как:

super.onCreate(savedinstancestate); 
0

эй, вам нужно сделать файлы стилей с номером версии. Для этого перейдите к значениям и щелкните правой кнопкой мыши, а затем щелкните файл ресурсов значений , затем укажите файл как стили, а затем в диалоговом окне под имеющейся опцией. Квалификаторы выбирают файл версии, затем нажмите значок >>, а затем введите версию 19 на нем, и этот файл будет работать на версии меньше Апи 21+

this is the dialog you will get on click of value Resource file

this is the final dialog where you need to enter your version number

это может помочь вам.

+0

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

0

Вы установили стиль темы в папках, основанных на API, и примените их, чтобы они применимы на основе версий API.

добавить темы в styles.xml. затем скопируйте папку styles.xml в значениях для разных папок на основе API-уровней [на основе вашего требования вы должны создать папки с расширением -X] , пожалуйста, обратитесь к изображению ниже.

Click here to view image

+0

Я уже пробовал это, хотя ThemeOverlay.AppCompat.Dark.ActionBar находится в самой библиотеке, я создал пользовательскую тему и задал ее как родительскую. без эффекта. android: значение темы полностью игнорируется в более низком API, помещаю ли я его в соответствующую папку (styles-v19.xml) или нет – Ramin

Смежные вопросы