所以我将自定义样式应用到我的按钮,它适用于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>
答案 0 :(得分:2)
如果您使用的是 appcompat-v7 22.2.1 ,那么它将使用材料设计,因此API 16将不支持。
有关详细信息,请参阅design support library description
这个答案可能有助于解决您的问题。
答案 1 :(得分:1)
在旧的Android版本中,并非所有样式都支持开箱即用。 这就是为什么你可能会注意到诸如值-14值-16值-21
之类的文件夹如果您没有提供实际的样式代码,我们无法帮助您。