我已经在触摸监听器上实现了一个客户,当用户触摸textview时,该用户应该更改textview的颜色,并在释放手指时将其更改回默认颜色。
public class CustomTouchListener implements View.OnTouchListener {
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
((TextView) view).setTextColor(Color.parseColor("#1089F9"));
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
((TextView) view).setTextColor(Color.parseColor("#AA000000"));
break;
}
return false;
}
}
final TextView basicDetails = (TextView) findViewById(R.id.basicdetailstitle);
basicDetails.setOnTouchListener(new CustomTouchListener());
触摸时颜色变为蓝色(#1089F9),但释放手指时,颜色不会变回默认值(#AA000000)。我错过了什么吗?
答案 0 :(得分:1)
如果您总是在MotionEvent.ACTION_DOWN
上返回false,则不会收到以下事件。
您可以使用选择器实现您想要的功能:
在:res / color / myselector.xml
中创建一个新的xml<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#1089F9" />
<item android:color="#AA000000" />
</selector>
在您的布局中,将以下内容添加到TextView:
android:textColor="@color/myselector"
答案 1 :(得分:1)
只需返回true即可完成