使用Appcompat在前棒棒糖上使用错误的按钮textColor和drawablePadding

时间:2015-10-02 06:55:30

标签: android xml appcompat-v7-r23

我在Lollipop之前的设备上有错误的按钮样式。

使用appcompat库进行编译。

  

编译'com.android.support:appcompat-v7:23.0.1'

值/ styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@android:color/holo_orange_light</item>
    <item name="colorPrimaryDark">@android:color/holo_orange_dark</item>
    <item name="colorAccent">@android:color/holo_green_light</item>

    <item name="colorControlNormal">@android:color/holo_purple</item>
    <item name="colorControlHighlight">@android:color/holo_red_light</item>
    <item name="colorButtonNormal">@android:color/holo_green_light</item>

    <item name="android:buttonStyle">@style/ButtonTheme</item>

</style>

<style name="ButtonTheme" parent="android:Widget.Button">
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textAllCaps">true</item>
    <item name="android:drawablePadding">10dp</item>
    <item name="android:padding">10dp</item>
</style>

V21 / styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="ButtonTheme" parent="android:Widget.Material.Button">
        <item name="android:textColor">@android:color/white</item>
        <item name="android:textAllCaps">true</item>
        <item name="android:drawablePadding">10dp</item>
        <item name="android:padding">10dp</item>
    </style>
</resources>

结果为http://prntscr.com/8mt1jx

在ISC上添加xml的“新按钮”没有样式textColor和drawablePadding。你有任何想法要纠正吗?

2 个答案:

答案 0 :(得分:6)

问题是普通styles.xml中的buttonStyle

替换

<item name="android:buttonStyle">@style/ButtonTheme</item>

使用

<item name="buttonStyle">@style/ButtonTheme</item>

它应该有用。

答案 1 :(得分:1)

因此,对于前Lollipop设备,请执行以下操作:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@android:color/holo_orange_light</item>
    <item name="colorPrimaryDark">@android:color/holo_orange_dark</item>
    <item name="colorAccent">@android:color/holo_green_light</item>

    <item name="colorControlNormal">@android:color/holo_purple</item>
    <item name="colorControlHighlight">@android:color/holo_red_light</item>
    <item name="colorButtonNormal">@android:color/holo_green_light</item>

    <item name="buttonStyle">@style/ButtonTheme</item>
    <item name="android:buttonStyle">@style/ButtonProgramAddTheme</item>

</style>

<style name="ButtonTheme" parent="Widget.AppCompat.Button">
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textAllCaps">true</item>
    <item name="android:drawablePadding">10dp</item>
    <item name="android:padding">10dp</item>

</style>

<style name="ButtonProgramAddTheme" parent="android:Widget.Button">
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textAllCaps">true</item>
    <item name="android:drawablePadding">10dp</item>
    <item name="android:padding">10dp</item>

</style>

结果是:http://prntscr.com/8mtoqa

同样对于程序添加按钮的相同视图,我们可以通过选择器添加自定义背景,因为AppCompat实际上不支持Lollipop前设备上的Button小部件。