是什么导致样式不适用于 API 级别 16?
What's causing styles to don't work with API level 16?
所以我对我的按钮应用了自定义样式,它在 API 级别 22 上工作正常,但是当我在 API 级别 16 上测试它时,我所有的自定义样式都消失了。这里发生了什么事?。我是 android 初学者,所以这可能是一种常见行为,但我找不到任何答案。
样式分为 4 个 xml 代表按钮状态:按下、聚焦、禁用和启用。我将它们分组在 1 xml 中,称为 button.xml 并将其应用到 styles.xml
button_pressed.xml(聚焦、禁用和启用类似)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="#004B8D"
android:startColor="#0865B7" />
<size
android:height="65dp"
android:width="65dp"/>
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<corners android:radius="3dp" />
</shape>
button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="false"
android:drawable="@drawable/button_disabled" />
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/button_pressed" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/button_focused" />
<item
android:state_enabled="true"
android:drawable="@drawable/button_enabled" />
</selector>
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name ="android:buttonStyle">@style/button</item>
</style>
<style name="button" parent="@android:style/Widget.Button">
<item name="android:gravity">center_vertical|center_horizontal</item>
<item name="android:textColor">#FFFFFFFF</item>
<item name="android:shadowColor">#000000</item>
<item name="android:shadowDx">0</item>
<item name="android:shadowDy">-1</item>
<item name="android:shadowRadius">0.4</item>
<item name="android:textSize">20sp</item>
<item name="android:textStyle">bold</item>
<item name="android:background">@drawable/button</item>
<item name="android:focusable">false</item>
<item name="android:clickable">true</item>
<item name="android:fontFamily">sans-serif-condensed</item>
</style>
并非所有样式都在旧 android 版本上开箱即用。
这就是为什么您可能会注意到诸如 values -14 values-16 values-21
之类的文件夹
如果您不提供实际的样式代码,我们将无法进一步帮助您。
如果您使用的是 appcompat-v7 22.2.1,那么它将使用 material 设计,因此 API 将不支持它16.
有关详细信息,请参阅 design support library description
希望这个答案能帮助解决您的问题。
所以我对我的按钮应用了自定义样式,它在 API 级别 22 上工作正常,但是当我在 API 级别 16 上测试它时,我所有的自定义样式都消失了。这里发生了什么事?。我是 android 初学者,所以这可能是一种常见行为,但我找不到任何答案。
样式分为 4 个 xml 代表按钮状态:按下、聚焦、禁用和启用。我将它们分组在 1 xml 中,称为 button.xml 并将其应用到 styles.xml
button_pressed.xml(聚焦、禁用和启用类似)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="#004B8D"
android:startColor="#0865B7" />
<size
android:height="65dp"
android:width="65dp"/>
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<corners android:radius="3dp" />
</shape>
button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="false"
android:drawable="@drawable/button_disabled" />
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/button_pressed" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/button_focused" />
<item
android:state_enabled="true"
android:drawable="@drawable/button_enabled" />
</selector>
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name ="android:buttonStyle">@style/button</item>
</style>
<style name="button" parent="@android:style/Widget.Button">
<item name="android:gravity">center_vertical|center_horizontal</item>
<item name="android:textColor">#FFFFFFFF</item>
<item name="android:shadowColor">#000000</item>
<item name="android:shadowDx">0</item>
<item name="android:shadowDy">-1</item>
<item name="android:shadowRadius">0.4</item>
<item name="android:textSize">20sp</item>
<item name="android:textStyle">bold</item>
<item name="android:background">@drawable/button</item>
<item name="android:focusable">false</item>
<item name="android:clickable">true</item>
<item name="android:fontFamily">sans-serif-condensed</item>
</style>
并非所有样式都在旧 android 版本上开箱即用。 这就是为什么您可能会注意到诸如 values -14 values-16 values-21
之类的文件夹如果您不提供实际的样式代码,我们将无法进一步帮助您。
如果您使用的是 appcompat-v7 22.2.1,那么它将使用 material 设计,因此 API 将不支持它16.
有关详细信息,请参阅 design support library description
希望这个答案能帮助解决您的问题。