Вопрос

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

 <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, как и с The Draitable, но я не могу. Я уже пробовал 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"
   />

Кто -нибудь получил подсказку?

Это было полезно?

Решение

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

<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/Draitable IE Res/Drawable/Button_text_color.xml. Затем просто установите нарисованную в качестве цвета текста:

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 и Open Colors.xml 2.copy 1 определенного текста, например, #ff4081, и изменить, например, я изменил на белые и изменил его значение, например, я изменил на #ffffff для такая стоимость белого

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

Затем внутри вашей кнопки добавьте эту линию

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

OK B3 - это имя моей кнопки, поэтому изменяется на кнопке «Имя твоего», все остальные будут одинаковыми, если вы используете белый цвет, если вы измените другой цвет, то измените белый на имя своего цвета, но сначала вы определили этот цвет в цветах. XML, как я объяснил в Pont 2

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

Потому что этот метод устарел

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

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

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

Использовать getColorStateList как это

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

вместо getColor

setTextColor(resources.getColor(R.color.button_states_color))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top