是什么导致样式不适用于 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

希望这个答案能帮助解决您的问题。