나는 라디오 버튼과 ImageView 및 패딩이 포함 된 5 개의 선형 레이아웃을 가지고 있습니다. 사용자가 라디오 버튼이 포함 된 선형 레이아웃의 일부를 클릭하면 라디오 버튼을 클릭하고 싶습니다. 라디오 버튼의 온 프레스 상태를 얻으려면 ontouchlistener에서 터치 이벤트를 파견하는 것이 가장 좋은 방법이라고 생각했습니다.dispatchTouch 둘러싼 레이아웃의 이벤트를 포함 버튼
내 문제는 어떻게 구현하는 것이 가장 좋습니까? 이것은 꽤 잘 작동하지만 사용자가 때때로 레이아웃 떨어져 자신의 손가락을 드래그 할 때 onPressed 상태가 영구적으로 남은 가끔 딸꾹질의 원인
@Override
public boolean onTouch(View v, MotionEvent arg1) {
//gets the index of which LinearLayout was touched
int rb = lArray.indexOf(v);
// uses this to identify the LinearLayout and RadioButton to control
LinearLayout l = lArray.get(rb);
RadioButton r = rbArray.get(rb);
switch (arg1.getAction()) {
case MotionEvent.ACTION_DOWN:
Sy = arg1.getY();
if (rb != -1) {
r.setPressed(true);
}
break;
case MotionEvent.ACTION_MOVE:
My = arg1.getY();
if (rb != -1 && Math.abs(Sy - My) > l.getHeight()/2) {
r.setPressed(false);
}
break;
case MotionEvent.ACTION_UP:
My = Sy = 0;
if (rb != -1) {
if (r.isPressed() && r.isEnabled()) {
r.performClick();
}
}
for (RadioButton b : rbArray) {
b.setPressed(false);
}
break;
}
return true;
}
}
:
이
내가 수동으로 눌러 상태를 설정 시도 하나의 방법이었다. 그러나 이것은 단지 그것이 정말 그냥 클릭 온 클릭하면 호출하지만 사용자가 레이아웃에서 자신의 손가락 한 개를 드래그하는 경우 비활성화@Override
public boolean onTouch(View v, MotionEvent event) {
int rb = lArray.indexOf(v);
RadioButton r = rbArray.get(rb);
r.dispatchTouchEvent(event);
return true;
}
:
또 다른 시도
이 있었다.내가 할 수있는 방법이 있습니까?
라디오 버튼 온 프레스 상태가 이런 식으로 발생하지 않습니다. – AndroidPenguin