我做了一个按钮,改变背景绘制在不同的状态,如下所示:

<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,因为我做的可绘制的,但我不能。我已经尝试了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"
   />

有人知道吗?


当前回答

像这样使用getColorStateList

setTextColor(resources.getColorStateList(R.color.button_states_color))

而不是getColor

setTextColor(resources.getColor(R.color.button_states_color))

其他回答

像这样使用getColorStateList

setTextColor(resources.getColorStateList(R.color.button_states_color))

而不是getColor

setTextColor(resources.getColor(R.color.button_states_color))

好的,很简单 1. res- value和open colors.xml 2.例如,复制定义的文本1 #FF4081并更改名称,例如我将其更改为白色,并更改其值,例如我将其更改为#FFFFFF,为白色的值,如下所示

<color name="White">#FFFFFF</color>

然后在按钮内添加这一行

 b3.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.White));

b3是我的按钮的名字所以改变了你的按钮的名字所有其他的都是一样的如果你用白色如果你改变了不同的颜色那么把白色改成你的颜色的名字但是首先你要在colors。xml中定义这个颜色就像我在第二章中解释的那样

更改按钮的文本颜色

因为这个方法现在已经弃用了

button.setTextColor(getResources().getColor(R.color.your_color));

我使用以下方法:

button.setTextColor(ContextCompat.getColor(mContext, R.color.your_color));

另一种方法是在课堂上:

import android.graphics.Color; // add to top of class  

Button btn = (Button)findViewById(R.id.btn);

// set button text colour to be blue
btn.setTextColor(Color.parseColor("blue"));

// set button text colour to be red
btn.setTextColor(Color.parseColor("#FF0000"));

// set button text color to be a color from your resources (could be strings.xml)
btn.setTextColor(getResources().getColor(R.color.yourColor));

// set button background colour to be green
btn.setBackgroundColor(Color.GREEN);

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

<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。然后将绘制对象设置为文本颜色:

android:textColor="@drawable/button_text_color"