导致样式无法使用API​​级别16的原因是什么?

时间:2015-08-10 03:28:46

标签: android xml android-layout android-studio androiddesignsupport

所以我将自定义样式应用到我的按钮,它适用于API级别22,但是当我使用API​​级别16测试它时,我的所有自定义样式都消失了。这里发生了什么?我是一个机器人初学者,所以可能它是一种常见的行为,但我无法找到任何答案。

样式分为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>

2 个答案:

答案 0 :(得分:2)

如果您使用的是 appcompat-v7 22.2.1 ,那么它将使用材料设计,因此API 16将不支持。

有关详细信息,请参阅design support library description

这个答案可能有助于解决您的问题。

答案 1 :(得分:1)

在旧的Android版本中,并非所有样式都支持开箱即用。 这就是为什么你可能会注意到诸如值-14值-16值-21

之类的文件夹

如果您没有提供实际的样式代码,我们无法帮助您。

相关问题