我試圖在按下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