Android настроенная кнопка; изменение цвета текста

Я сделал кнопку, которая меняет фоновый рисунок на разные состояния, таким образом:

 <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 -->

Проблема в том, что я также пытаюсь изменить textColor так же, как и с помощью drawable, но я не могу. Я уже пробовал Android: textColor и android: цвет, но первый не работает, пока секунды меняют мой фон.

Следующий код является частью моего макета. Что касается цвета текста, он работает только для цвета нормального состояния, не меняя его на белый, а нажав

<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"
   />

У кого-нибудь есть ключ?

Ответ 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. Затем просто установите цвет для рисования:

android:textColor="@drawable/button_text_color"

Ответ 2

Другой способ сделать это в вашем классе:

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);

Ответ 3

ok очень просто сначала перейдите к 1. res-valuse и open colors.xml 2.copy 1 определенного текста, например, их # FF4081 и изменить имя, например, я изменил на белый и изменил его значение, например, я изменил на #FFFFFF для белого значения, подобного этому

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

затем внутри вашей кнопки добавьте эту строку

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

ok b3 - это имя моей кнопки, так что изменилось имя кнопки ur, все остальные будут одинаковыми, если вы используете белый цвет, если вы меняете другой цвет, а затем меняете белый цвет на имя своего цвета, но сначала вы определяете этот цвет в colors.xml, как я объяснил в pont 2

Ответ 4

Изменение цвета текста кнопки

Поскольку этот метод теперь устарел

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

Я использую следующее:

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

Ответ 5

Используйте getColorStateList как это

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

вместо getColor

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