38

In Android Studio, I imported a project which did not include styles.xml (v21). So I created a styles-v21.xml file in the values directory. Both styles.xml and styles-v21.xml are in the values directory now.

styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="AppTheme" parent="AppTheme.Base">
        <!-- Customize your theme here. -->
    </style>

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

    </style>

</resources>

styles-v21.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">

    </style>

</resources>

When I build the project I get a build error:

Error:Error: Duplicate resources: C:\xxx\main\res\values\styles-v21.xml:style/AppTheme, C:\xxx\main\res\values\styles.xml:style/AppTheme

The error is that both resource files have the same style name: AppTheme. But in other projects and tutorials I've seen, these styles have the same name. One is for Android with version 21 compatibility and the other is for Android without the compatibility.

I guess I want to know if I should simply change the name or if these files are supposed to have the same name - which means there is a bigger problem at hand. How should I proceed?

Armen
  • 4,064
  • 2
  • 23
  • 40
user2456977
  • 3,830
  • 14
  • 48
  • 87
  • 8
    Some places in your question, you refer to a `styles-v21` folder. Some places in your question, you refer to a `styles-v21` or `styles-v21.xml` file. Did you create all of these? If not, please edit your question to **accurately** explain what files you created where. The right answer, BTW, is to have a `res/values-v21/styles.xml` file. – CommonsWare Feb 11 '15 at 21:45
  • *Fixed* - Ah I will do that and see if it works. – user2456977 Feb 11 '15 at 21:51
  • You don't need to maintain different styles.xml files to make your app compatible with all api levels. You can do that in a single styles.xml(default) file. Checkout this answer https://stackoverflow.com/a/53445541/5745574 – Vipul Kumar Nov 23 '18 at 11:34

5 Answers5

136

Right click on res folder, choose New --> Android resource file, set the same name for the new file "styles", in Available qualifiers: choose the last item "Version" and finally set "Platform API level" 21.

Marco Aurelio Silva
  • 1,524
  • 1
  • 12
  • 6
10

By default, Android Studio doesn't create styles.xml (v21). What you need to do is create a folder structure like the following:

  • res/values/styles.xml
  • res/values-v21/styles.xml

And this is what you will get in Android Studio:

enter image description here

Then you can defined different AppTheme for different API levels.

Yuchen
  • 30,852
  • 26
  • 164
  • 234
2

You should create styles.xml for version 21 in values-v21 folder and android studio automatically add it as styles.xml(v21)

Mycoola
  • 1,135
  • 1
  • 8
  • 29
0

correction to styles-v21.xml.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent=""AppTheme.Base"">

    </style>

</resources>
NPE
  • 11
0

You have to create a value folder with values-v21 caption. and create style.xml file in this with the same name as values folder like styles.xml. Now rebuild your project.