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


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

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

проблема здесь в том, что я также пытаюсь изменить цвет текста, как я делаю с 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"
   />

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

4 221

4 ответа:

создайте цвет с сохранением состояния для вашей кнопки, как и для фона, например:

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

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

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

ОК очень просто сначала подойти к 1. res-valuse и открытые цвета.XML 2.скопируйте 1 из определенного текста их например #FF4081 и изменить имя, например, я изменил на белый и изменить его значение, например, я изменил на #FFFFFF для белого значения, как это

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

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

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

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

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

потому что этот метод является теперь устаревшим

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

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

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