Android 按钮文字颜色始终为粉红色

标签 android xml button state

当按钮在选定状态和非选定状态之间切换时,我试图同时更改按钮文本颜色和按钮背景颜色。背景效果完美,但文本仅显示为粉红色(默认 colorPrimary ,我已经更改)。

res/drawable/map_button_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="false">
        <shape android:shape="rectangle">
            <corners android:radius="4dp"/>
            <solid android:color="@android:color/transparent"/>
        </shape>
    </item>

    <item android:state_selected="true">
        <shape android:shape="rectangle">
            <corners android:radius="4dp"/>
            <solid android:color="@color/colorPrimary"/>
        </shape>
    </item>
</selector>

res/drawable/map_button_text.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="false">
        <color android:color="@color/colorPrimary"/>
    </item>

    <item android:state_selected="true">
        <color android:color="@android:color/white"/>
    </item>
</selector>

res/styles/styles.xml

<style name="Button.Map">
    <item name="android:layout_height">0dp</item>
    <item name="android:layout_weight">1</item>
    <item name="android:layout_margin">4dp</item>
    <item name="android:background">@drawable/map_button_background</item>
    <item name="android:textColor">@drawable/map_button_text</item>
</style>

此外,文本颜色永远不会改变,它一直保持粉红色。我尝试添加 <item android:color="@color:/colorPrimary"/>用作默认值,但它仍然不起作用。

对造成它的原因有什么想法吗?

最佳答案

你有几个问题。

首先,您的 <item>元素应该有 android:color直接在他们身上,而不是在 child 身上<color>元素。

第二,android:textColor需要引用颜色资源(或文字颜色值)。

您已经放置了您的 map_button_text您的资源 res/drawable文件夹,它告诉 Android 将其解释为 Drawable,而不是颜色。

如果将该文件移动到 res/color并通过 @color/map_button_text 引用它你应该得到你想要的。

最后,您还应该为您的选择器定义一个默认状态(没有任何 android:state_ 属性)。

您的最终 XML 应如下所示:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/colorPrimary" android:state_selected="false"/>

    <!-- Default state -->
    <item android:color="@android:color/white"/>
</selector>

关于Android 按钮文字颜色始终为粉红色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41065873/

相关文章:

xml - Chrome 开发者工具响应/预览选项卡 "Pretty Print"或 "Formatting"

html - 使用 :focus to create a CSS toggle 时忽略光标样式

android - 连续播放声音 onTouch()

android - 用户单击按钮并且 Firestore 文档更新后如何更改 View ?

java - 在 Canvas 上以更好的分辨率绘画? (安卓)

android - queryIntentActivities() 在结果中包含私有(private) Activity

c++ - 将 Xerces-C DOMDocument 中的 Xerces-C DOMElement 附加到另一个 Xerces-C DOMDocument

php - 从 XML 流生成 CSV 文件以进行 MYSQL 导入

button - 在 AVPlayerLayer 顶部添加按钮 - iOS Swift

android - 如何在android中添加按钮?