我创建了关于按钮背景及其文本的翻转效果。我已经能够为背景创建翻转效果,这样当按钮处于按下或聚焦状态时,背景将从黑色变为黄色。以下是我这样做的方式:
在我的片段中:
btnLogin.setBackgroundResource(R.drawable.btn_login);
这里是后台资源,即btn_login.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/btn_loginrollover" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/btn_loginrollover" /> <!-- focused -->
<item android:drawable="@drawable/btn_logindefault" /> <!-- default -->
</selector>
btn_logindeault.xml:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:padding="10dp">
<solid android:color="#000000"/>
<corners
android:bottomRightRadius="4dp"
android:bottomLeftRadius="4dp"
android:topLeftRadius="4dp"
android:topRightRadius="4dp"/>
<gradient
android:startColor="#000000"
android:centerColor="#000000"
android:endColor="#FFFFFF"
android:angle="90"/>
</shape>
btn_loginrollover.xml:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:padding="10dp">
<solid android:color="#FFCC00"/>
<corners
android:bottomRightRadius="3dp"
android:bottomLeftRadius="3dp"
android:topLeftRadius="3dp"
android:topRightRadius="3dp"/>
</shape>
我想对按钮文本做同样的事情,这样当按钮处于按下或聚焦状态时,文本会从黑色变为黄色。
按钮的时间,但与文本有关。下面是我使用setOnFocusChangeListener执行此操作的失败:
btnLogin.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
btnLogin.setTextColor(Color.BLACK);
} else {
btnLogin.setTextColor(Color.parseColor("#FFCC00"));
}
}
});
我也尝试使用按钮的setOnTouchListener来监控事件并相应地更改文本颜色,但这也不成功:
btnLogin.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (hasFocus) {
btnLogin.setTextColor(Color.BLACK);
} else {
btnLogin.setTextColor(Color.parseColor("#FFCC00"));
}
}
});
关于如何解决我的问题的任何想法?
感谢。
答案 0 :(得分:0)
btnLogin.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
btnLogin.setTextColor(Color.parseColor("#FFCC00"));
break;
case MotionEvent.ACTION_UP:
btnLogin.setTextColor(Color.BLACK);
break;
}
return true;
}
});