보기를 누를 때 ColorStateList
또는 선택기 역할을하는 메소드를 만들려고합니다. 보기가 메소드 onClickColorSelector
에 전달되면보기가 표시되고 setOnTouchListener
으로 설정되므로 사용자가 view
을 누르면보기는 선택기 효과를 얻습니다.onTouchListener는 두 번째로 눌렀을 때만 작동합니다.
이제 문제는 onTouchListener
이보기를 두 번째로 클릭 할 때만 호출된다는 것입니다. 왜 그렇게 행동하고 어떻게 해결할 수 있습니까?
참고! 나에게 ColorStateList 제안하지 말아라!
onClickColorSelector 이것은 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;
}
});
}
라는 클래스에 있습니다
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()
방법이vs.onClickColorSelector(loginBtn, Color.RED);
전화 ...... – sushildlh@sushildlh 그 대답이었다! 하하는 그렇게 작은 것이 놓칠 때 우습다! 답변으로 작성하십시오 – Muddz