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