Нажатие кнопки, цвет текста
Мне нужно изменить цвет кнопки (нормальный / нажата) с помощью селектора
Рез / цвет /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" />
Зачем менять цвет, давайте сделаем совершенно новую привлекательную вещь.... Я уверен, вам понравится
Создайте 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
являются изображения, которые вы хотите показать на нажатой кнопке и нормальное состояние кнопки
Установить фон кнопки как
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" />
и наслаждаться!