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

旧城冷巷雨未停 提交于 2020-01-30 14:29:29

问题


I want to use Material Theme in my application which has minimum sdk version of 8. As per docs - "The material theme is only available in Android 5.0 (API level 21) and above. The v7 Support Libraries provide themes with material design styles for some widgets and support for customizing the color palette." Does it mean I can use it if I add v7 Support Libarary in my project? Because after adding this library I got the following error:

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

Or maybe I understood something wrong? Any suggestion will be appreciated. Thanks in advance.


回答1:


For this you need to have 2 values folder.

One that exist by default, and another, u have to create in your res folder and name it values-v21.

In the default values folder, in styles.xml, use theme other than Material theme And in the styles.xml of values-v21 folder that you created, use Material theme.

Android phone will automatically pickup the styles.xml which it support. If the phone supports Material Design (Lollipop devices), your app will use material theme (values-21 folder).

if it doesnt (in phones running older android versions), the default values folder will be used.




回答2:


You need to use android:theme="@style/Theme.AppCompat.Light" theme to get a material design.

Make sure your min is 8 and your target is 21. And you're using build tools/sdk 21.




回答3:


Pedro Oliveira is right with regards to Theme.AppCompat, but some essential information is missing in that answer.

A blog post titled appcompat v21: material design for pre-Lollipop devices! by Chris Banes from the Android team probably best answers the question of how to get Material Theme for API levels prior to 21.

To summarise, you need appcompat-v7 dependency:

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

After that, for dark version as your base theme, use:

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

And for light version:

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

And if you're new to AppCompat, there are things you need to know, such as:

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: more recently, ActionBarActivity has been deprecated in favour of AppCompatActivity.

But you really should read the whole Setup section of that blog post! (The information on Toolbar vs Action Bar, and some of the comments are also something you probably shouldn't miss.)




回答4:


In your NameActivity.java file import the following:

import android.support.v7.widget.Toolbar;

Comment the previous one:

//import android.widget.Toolbar;

With this the problem is solved.



来源:https://stackoverflow.com/questions/26990021/androidtheme-material-light-requires-api-level-21-current-min-is-8

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!