我试图在按下View时使其作为ColorStateList
或Selector。当视图传入方法onClickColorSelector
时,它将采用视图并设置一个setOnTouchListener
,因此当用户按下view
时,该视图将获得选择器效果。onTouchListener仅在第二次按下时才起作用
现在问题是onTouchListener
仅在第二次单击查看时调用。为什么它的行为如何以及如何解决?
注意!不建议我ColorStateList!
onClickColorSelector是在一个叫做视图选择
public void onClickColorSelector(View view, final int onPressColor) {
Log.d("TAG" , "1");
view.setOnTouchListener(new View.OnTouchListener() {
int defaultTextColor = 0;
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
Log.d("TAG" , "2");
if (view instanceof TextView) {
Log.d("TAG" , "3");
defaultTextColor = ((TextView) view).getCurrentTextColor();
((TextView) view).setTextColor(onPressColor);
}
Log.d("TAG" , "4");
view.getBackground().setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);
return true;
} else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
if (view instanceof TextView) {
((TextView) view).setTextColor(defaultTextColor);
}
view.getBackground().setColorFilter(null);
return true;
}
return false;
}
});
}
类这是怎么onClickColorSelector();
从另一个类叫做:
ViewSelector vs = new ViewSelector(this);
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
vs.onClickColorSelector(loginBtn, Color.RED);
}
});
调用这个'vs.onClickColorSelector(loginBtn,Color.RED);'在'的OnCreate()'方法...... – sushildlh
@sushildlh它就是答案!当错过这么小的事情时哈哈很有趣!请将其作为答案 – Muddz