小编典典

安卓自定义按钮;改变文字颜色

all

我制作了一个按钮,可以通过这种方式更改不同状态下的背景可绘制对象:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true" android:drawable="@drawable/btn_location_pressed" /> <!-- pressed -->
     <item android:state_focused="true" android:drawable="@drawable/btn_location_pressed"/> <!-- focused -->
     <item android:drawable="@drawable/btn_location"/> <!-- default -->
</selector>

这里的问题是我也试图改变 textColor 就像我对 drawable 所做的那样,但我做不到。我已经尝试过 android:textColor 和
android:color 但是第一个不起作用,而秒数改变了我的背景。

下一个代码是我布局的一部分。关于文本颜色,它仅适用于正常状态的文本颜色,因此在按下时不会将其更改为白色

<Button android:id="@+id/location_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="5dp"
        android:background="@drawable/location"          
        android:textSize="15sp"
        android:textColor="@color/location_color"
        android:textColorHighlight="#FFFFFF"
   />

有人有线索吗?


阅读 110

收藏
2022-05-16

共1个答案

小编典典

为您的按钮创建一个有状态的颜色,就像您为背景所做的那样,例如:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Focused and not pressed -->
    <item android:state_focused="true" 
          android:state_pressed="false" 
          android:color="#ffffff" />

    <!-- Focused and pressed -->
    <item android:state_focused="true" 
          android:state_pressed="true" 
          android:color="#000000" />

    <!-- Unfocused and pressed -->
    <item android:state_focused="false" 
          android:state_pressed="true" 
          android:color="#000000" />

    <!-- Default color -->
    <item android:color="#ffffff" />

</selector>

将 xml 文件放在 res/drawable 文件夹的文件中,即
res/drawable/button_text_color.xml。然后只需将drawable设置为文本颜色:

android:textColor="@drawable/button_text_color"
2022-05-16