изменить цвет текста кнопки при нажатии
Я сделал свою кнопку прозрачной, поэтому я хотел бы изменить цвет текста кнопки при нажатии кнопки. Можно ли это сделать, используя только xml-файлы?
5 ответов
см. Государственный Список в этой документации...Катры Ресурсов.
вы можете определить два разных Button
xml-файлы один для прозрачного состояния "по умолчанию", а другой с кнопкой красного цвета для вашего состояния "нажата". Затем вы определяете selector
который переключает привлекаемые ресурсы в разных состояниях.
EDIT: согласно комментарию devunwired, ресурс списка состояний цвета, вероятно, более подходит для изменение цвета, а не сам drawable.
Да, вы можете сделать это так:
layout / main_layout.XML-код:
.....
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="bonjour !"
android:textColor="@color/button_text_color"
/>
.....
цвет/button_text_color.XML-код:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#c0c0c0" android:state_pressed="true"/>
<item android:color="#ffffff"/>
</selector>
мне нравится решение, предложенное Константином буровым в другом вопросе:Android настроенная кнопка; изменение цвета текста
вы можете управлять больше состояний, чем просто нажата и нормально. Но это должно решить проблему.
<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>
затем вы можете использовать этот селектор, отображаемый в вашей кнопке, изменяя атрибут цвета текста, как показано ниже. Обратите внимание, что селектор в приведенном ниже примере называется "button_text_color"
андроид:свойства textColor="@холст/button_text_color"
используя тот же drawable подход, вы также можете решить цвет фона кнопки. Просто помните, что в селекторе вместо использования атрибута "android:color" вам нужно использовать атрибут "android:drawable", как показано ниже.
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Focused and not pressed -->
<item android:state_focused="true"
android:state_pressed="false"
android:drawable="#ffffff" />
<!-- Focused and pressed -->
<item android:state_focused="true"
android:state_pressed="true"
android:drawable="#000000" />
<!-- Unfocused and pressed -->
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="#000000" />
<!-- Default color -->
<item android:drawable="#ffffff" />
</selector>
а затем в самой кнопке, обратите внимание, что на этот раз имя селектора "button_background"
android: background= "@drawable / button_background"
вы должны сделать это в коде. Попробуйте это:
mBtn = ((Button) findViewById( R.id.button1 ));
mBtn.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
mBtn.setTextColor( Color.RED );
}
});
объявить:
private Button mBtn;
необходимо указать @drawable
xml-ресурс в textColor
attributte
вот пример: Android настроенная кнопка; изменение цвета текста