36

Я хочу использовать тему материала в своем приложении, которая имеет минимальную версию sdk 8. Согласно документам - «Тема материала доступна только на Android 5.0 (API-уровень 21) и выше. Библиотеки поддержки V7 предоставляют темы с стилями оформления материалов для некоторых виджетов и поддерживают настройку цветовой палитры ». Означает ли это, что я могу использовать его, если я добавлю V7 Support Libarary в свой проект? Потому что после добавления этой библиотеки я получил следующую ошибку:android: Theme.Material.Light требует уровня API 21 (текущий минимум 8)

android:Theme.Material.Light requires API level 21 (current min is 8).

Возможно, я понял что-то не так? Любое предложение будет оценено по достоинству. Заранее спасибо.

+1

На этой странице говорится, что вы видите [эту страницу] (https://developer.android.com/training/ материал/совместимость.html), который сообщает вам, какой Theme.AppCompat вы можете использовать. –

+0

yaa support lib поддерживает версию 8, но вы должны скомпилировать с помощью 21 –

+0

@JeremyMiller Спасибо за ссылку, которую я пропустил. – PPD

ответ

40

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

Один, который существует по умолчанию, а другой, вы должны создать в своей папке res и назовите его значения-v21.

В папке значений по умолчанию, в styles.xml, используйте тему, отличную от темы Материала И в созданной вами папке styles.xml values-v21 используйте тему Материал.

Телефон Android автоматически забирает стили.xml, которые он поддерживает. Если телефон поддерживает конструкцию материалов (устройства Lollipop), ваше приложение будет использовать материальную тему (папка значений-21).

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

+0

также должен был бы сделать идентичный Strings.xml? кажется abit избыточным? –

33

Для того, чтобы получить материал, необходимо использовать тему android:theme="@style/Theme.AppCompat.Light".

Убедитесь, что ваш мин составляет 8 и ваша цель 21. И вы используете инструменты для сборки/SDK 21.

+0

Я думаю, что предпочитаю этот ответ по принятому. – Rishabh

23

Pedro Oliveira is right касаемо Theme.AppCompat, но некоторая важная информация отсутствует в этом ответе.

Столб блог под названием appcompat v21: material design for pre-Lollipop devices! Крис Бэйнс из команды Android, вероятно, лучше всего отвечает на вопрос о том, как получить материал Тема для уровней API до 21.

Подводя итог, необходимо appcompat-v7 dependency:

dependencies { 
    ... 
    compile "com.android.support:appcompat-v7:21.0.3" 
} 

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

<style name="AppTheme" parent="Theme.AppCompat"> 
</style> 

И для легкой версии:

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
</style> 

И если вы новичок в AppCompat, есть вещи, которые вы должны знать, такие как:

All of your Activities must extend from ActionBarActivity*. It extends from FragmentActivity from the v4 support library, so you can continue to use fragments.

* NB: совсем недавно, ActionBarActivity устарела в пользу AppCompatActivity.

Но вы действительно должны прочитать весь раздел «Настройка» этого сообщения в блоге! (Информация о панели инструментов и панели действий и some of the comments также вы не должны упускать.)

+0

Спасибо, что добавили, что вверх :) –

+0

Использование Theme.AppCompat.Light.NoActionBar и расширение от android.support.v4.app.FragmentActivity, он отлично работает. Я думаю, что как только вы добавите ActionBar, требование о продлении действия ActionBarActivity вступит в игру. –

+0

Да, эта формулировка, которую я цитировал, не самая ясная. Если вы не используете панель действий (или панель инструментов как панель действий?), ActionBarActivity не требуется. – Jonik

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