Нажатие кнопки, цвет текста

Мне нужно изменить цвет кнопки (нормальный / нажата) с помощью селектора

Рез / цвет /test_color_button.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/button_focused"/>
<item android:state_pressed="false" android:color="@color/button_font"/>
<item android:color="@color/button_font"/>
</selector>

в классе кода MyButton (расширен от класса Button), и я использовал следующий код для установки цвета текста

 //at Constructor 
 this.setTextColor(getResources().getColor(R.color.text_color_button));

Но моя проблема в том, что кнопка всегда показывает цвет по умолчанию

3 ответа

Решение

Вам нужно создать ColorStateList объект

XmlResourceParser parser = getResources().getXml(R.color.test_color_button);
ColorStateList colorStateList = ColorStateList.createFromXml(getResources(), parser);
this.setTextColor(colorStateList);

Попробуйте установить селектор на фон следующим образом:

<Button
   android:id="@+id/button1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/button_bg" />

Зачем менять цвет, давайте сделаем совершенно новую привлекательную вещь.... Я уверен, вам понравится

  1. Создайте XML-файл в вашей папке для рисования с именем как button_bg.xml как следующее

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
        <item android:drawable="@drawable/button_pressed" android:state_pressed="true" />
    
        <item android:drawable="@drawable/button" />
    
    </selector>
    

где button_pressed а также button являются изображения, которые вы хотите показать на нажатой кнопке и нормальное состояние кнопки

  1. Установить фон кнопки как button_bg.xml как следующее

    <Button
       android:id="@+id/button1"
       android:layout_width="250dp"
       android:layout_height="70dp"
       android:layout_marginLeft="360dp"
       android:layout_marginTop="520dp"
       android:background="@drawable/button_bg"  <!--like this-->
       android:text="Login"
       android:textColor="#ffffff"
       android:textSize="30dp" />
    

и наслаждаться!

Другие вопросы по тегам