我试图在按下View时创建一个充当ColorStateList
或Selector的方法。将视图传递给方法onClickColorSelector
时
它会占用视图并设置setOnTouchListener
,因此当用户按下view
时,视图会获得选择器效果。
现在问题是onTouchListener
仅在第二次点击视图时调用。为什么它表现得那样以及如何解决它?
注意! 不要建议我使用ColorStateList!
onClickColorSelector位于名为ViewSelector
的类中 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);
}
});
答案 0 :(得分:0)
按下按钮时激活...
这就是它第二次跑的原因......
请在您的电话中调用此
vs.onClickColorSelector(loginBtn, Color.RED);
OnCreate()
方法