Я пытаюсь научиться стилю своего приложения, используя файл styles.xml, и мне нужно разъяснить несколько вещей, чтобы понять это.Стиль Android, разница между уровнями api
В пункте, в чем разница между настройкой
android:actionbarstyle
и простоactionbarstyle
? Я знаю, что в этом конкретном случае я должен определить оба, но почему? А как насчет всех других случаев, напримерandroid:colorPrimary
и толькоcolorPrimary
? В этом случае я получаю сообщение об ошибке, указывающее, чтоandroid:colorPrimary
может использоваться только с минимальным уровнем API API 21. Так есть ли у кого-то хорошее объяснение того, что делает префиксandroid:
и как он влияет на мое приложение?Есть ли ссылка на разные родительские стили, такие как
parent="@style/Widget.AppCompat.Light.ActionBar
и что они означают? Как найти список различных родительских стилей, доступных для определенного элемента, и что я могу «переопределить» в них? Прямо сейчас, это в основном угадывает с моей стороны ....
Как ссылка, я отправляю свой текущий файл styles.xml.
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="MyTheme"/>
<style name="MyTheme" parent="Theme.AppCompat.Light">
<item name="actionBarTheme">@style/MyTheme.ActionBarTheme</item>
<item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item>
<item name="actionBarStyle">@style/MyTheme.ActionBarStyle</item>
<item name="colorPrimary">@color/my_green</item>
<item name="colorPrimaryDark">@color/my_forest</item>
<item name="colorAccent">@color/my_soil</item>
<item name="drawerArrowStyle">@style/MyTheme.DrawerArrowStyle</item>
<item name="android:actionOverflowButtonStyle">@style/MyTheme.OverFlow</item>
<item name="android:actionMenuTextColor">@color/white</item>
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
<item name="android:homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
<item name="colorControlNormal">@color/my_green</item>
<item name="colorControlActivated">@color/my_forest</item>
<item name="colorControlHighlight">@color/my_deep_green</item>
</style>
<style name="MyTheme.ActionBarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
<!-- This sets the BACK arrow to white. Otherwise it's black. Must be placed in the theme-->
<item name="colorControlNormal">@color/white</item>
</style>
<style name="MyTheme.ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar">
<item name="android:background">@color/my_green</item>
<item name="background">@color/my_green</item>
<item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
<item name="titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
<item name="colorControlNormal">@color/white</item>
</style>
<style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">@color/white</item>
</style>
<style name="MyTheme.DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">true</item>
<item name="color">@color/white</item>
</style>
<style name="MyTheme.OverFlow" parent="Widget.AppCompat.ActionButton.Overflow">
<item name="android:tint">@color/white</item>
</style>
</resources>
Хорошо, что это хороший основной пояснения. Это хорошая идея создать папку values-v21 и файл styles.xml, в который я помещаю все атрибуты без тега android: и все остальные в пределах обычного styles.xml? – Joakim
В значениях-v21 вам нужно использовать его с префиксом, в стандартном нет (если это относится к App Compat related). В папке значений используйте «colorPrimary» и в папке «values-v21» используйте «android: colorPrimary». Но только если вам нужно переопределить некоторые атрибуты, я бы поставил что-то особенное в значениях-v21. –