【问题标题】:Button text disappears after setting text colors设置文字颜色后按钮文字消失
【发布时间】:2013-11-14 13:11:41
【问题描述】:

我的按钮使用两个 XML 文件在按下时进行一些花哨的颜色切换,但我对可绘制颜色有问题(不知道该怎么称呼它)...

这是一个按钮

<Button
        android:background="@drawable/main_loginbtn"
        android:textColor="@color/main_loginbtn"
        android:id="@+id/button1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:onClick="login"
        android:text="Login" />

(我知道我不应该使用硬编码字符串,但我稍后会更改它:)

这里是@drawable/main_loginbtn

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
    <shape android:shape="rectangle" >
        <solid android:color="#FFFFFF"/>
        <stroke android:width="2dp"
                android:color="#00BFFF"/>
    </shape>
</item>
<item>
    <shape android:shape="rectangle" >
        <solid android:color="#00BFFF"/>
        <stroke android:width="2dp"
                android:color="#FFFFFF"/>
    </shape>
</item>
</selector>

最后,这是@color/main_loginbtn 文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#00BFFF"/>
<item android:color="#FFFFFF"/>
</selector>

如果我删除对@color/main_loginbtn 的textColor 引用,它将解决问题并且文本将重新出现在按钮上(当然是黑色的)。所以我很确定问题出在可绘制的颜色上。

通常情况下,我不会关心这个,但是当按钮内没有文本时,由于 wrap_content,它会弄乱某些按钮的缩放。

感谢您的宝贵时间!


更新

我尝试创建第二个随机颜色可绘制对象,并在 TextView 的 textColor 属性上对其进行测试,结果出现了同样的问题……整个 TextView 文本消失了。

所以我认为这是选择器的问题?

哦,我在这个问题上也搞砸了:没有任何东西“消失”,而是我在 Eclipse 布局 UI 中看不到文本。当我在模拟器中运行它时,一切正常......

【问题讨论】:

  • “消失”是指文字与编辑器中的矩形纯色颜色相同吗?如果是这样,请尝试清理项目和/或显式设置按钮状态。
  • @SoundConception “消失”是指文本在 Eclipse 布局 UI 编辑器中消失了……但在实际模拟器中没有。

标签: android


【解决方案1】:

您需要设置颜色的透明度。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#FF00BFFF"/>
    <item android:color="#FFFFFFFF"/>
</selector>

如果您不这样做,UI 编辑器会假设您的颜色是透明的(换句话说,如果您不设置它,它默认为 alpha = 00)。

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 2018-03-22
    • 2019-05-27
    • 2011-09-09
    • 2017-08-15
    • 2013-08-30
    • 2015-12-07
    • 2011-11-23
    • 1970-01-01
    相关资源
    最近更新 更多