我有一个TextView
,有一个onLongClickListener
和OnClick
事件,保持TextView
时,它的颜色变为红色,释放时,它的颜色应该变为白色。
问题:
当我握住TextView
并在握住时将手指移到其外部,然后离开手指时,其颜色不会变为白色。
XML格式
<TextView
android:layout_width="match_parent"
android:text="hello"
android:textColor="#ffff"
android:id="@+id/timer"
android:layout_height="wrap_content"
/>
爪哇
final TextView t1 = (TextView) findViewById(R.id.timer);
t1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
t1.setTextColor(Color.WHITE);
}
});
t1.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
t1.setTextColor(Color.RED);
return false;
}
});
最佳答案
View.OnClickListener
-单击视图时要调用的回调的接口定义。View.OnLongClickListener
-单击并保持视图时要调用的回调的接口定义。
所以你说的是百分之百正确的。它应该是红色的,因为它被点击并保持你的方式。
但当我拿着文本视图并将手指移到文本视图之外时
握着,然后离开我的手指,它不会改变它的颜色
白色
当文本视图只被单击时,您已经将其设置为白色!!如果您想获得您所说的白色(单击并按住),则需要在OnLongClickListener
中设置白色
如果要检测视图,请触摸并释放并更改与之相关的颜色,则需要使用OnTouchListener
而不是单击侦听器View.OnTouchListener
-在将触摸事件发送到此视图时要调用的回调的接口定义。在将touch事件提供给视图之前将调用回调
t1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch ( event.getAction() ) {
case MotionEvent.ACTION_DOWN:
t1.setTextColor(Color.RED); // pressed state
break;
case MotionEvent.ACTION_UP:
t1.setTextColor(Color.WHITE); // Released state
break;
}
return true;
}
});