2011-10-22 2 views
4

나는 onClick 핸들러를 통해 처리하는 버튼이 있습니다.onClick 및 onTouchEvent 이벤트를 동시에 처리하기

그러나 버튼 시야를 처리 할 수 ​​있도록 onTouchEvent 이벤트에 응답해야합니다.

내 onTouchEvent 핸들러에서 "false"를 반환하면 onClick 핸들러가 호출되지만 후속 "up"이벤트에 대해서는 onTouchEvent가 제공되지 않습니다.

onTouchEvent에서 "true"를 반환하면 "up"이벤트가 발생하지만 onClick에 터치가 전달되지 않습니다.

내 옵션은 무엇입니까? 나는 등 및 버튼 영역 외부의 움직임을 추적하기 위해 요구되는 것을 의미하는 종류의 복잡한 것 같다 -

  1. 내 자신의 "클릭"onTouchEvent 내부에서 처리하는 것은 구현합니다.

  2. 버튼 하나의 이미지 대신 선택기를 사용하고 다른 상태에 다른 이미지를 지정할 수 있습니다. 내가 가진 문제는 선택자가 으로 변경하는 것이 번거롭다는 것입니다. 이미지를 처리해야합니다. 달성하는 간단한 방법은 내 응용 프로그램이 다른 "모드"에있을 때 (서로 다른 상태의 버튼 이미지를 변경합니다. 다시 말하지만, 이것은 지나치게 복잡한 것 같다.

없을까이 모든

+0

내가 이것을 올바르게 이해하는지 보겠습니다. 버튼의 기본 강조 표시를 자신의 것으로 강조하고 싶습니까? 그렇다면 onTouch 내의 강조 표시를 모두 수행하고 ACTION_UP을받을 때 button.performClick()을 호출 할 수 있습니까? performClick은 onclicklistener가 설정된 경우 버튼의 onClick 메서드를 호출합니다. –

답변

1

를 둘 다 클릭을해야하는 경우 동일한보기에서 이벤트를 터치하려면 GestureDetector을 사용하세요. 당신은 그 청취자의 onShowPress 메쏘드를 분명히 조사해야한다.

1
???

위의 옵션 2에서 줄기 것입니다 가장 좋은 것 같다.

을 나는 여러에게 ButtonStateListDrawable 선택기를 만들어 제안하고 프로그래밍 Button.setBackgroundResource()를 사용하여 스타일 사이의 전환.

+0

그게 좋은 생각입니다. 사실 내가 한 일은 이미지를 변경하고 싶을 때마다 전체 StateListSelector를 다시 작성하는 것이 었습니다. 그러나 onClick 및 onTouchEvents를 동시에 처리하는 방법과 관련하여 질문을 공개하고 싶습니다. – Brad

관련 문제