在使用Appcompat时,Lollipop版本之前的错误按钮文本颜色和可绘制填充问题。

4

我的应用在Android 5.0以下版本的设备中,按钮样式显示错误。

我正在使用appcompat库进行编译。

compile 'com.android.support:appcompat-v7:23.0.1'

请查看values/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个回答

6
问题出在您的normal styles.xml文件中的buttonStyle属性上。
请将其替换为:
<item name="android:buttonStyle">@style/ButtonTheme</item>

带着

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

它应该能够正常工作。


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小部件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接