2010-08-06 7 views
2

맞춤 진행 대화 상자를 구현하는 데 어려움이 있습니다. 오버레이가 터치 이벤트를 가로채는 경우에도 사용자는 여전히 트랙볼을 조작하고 비활성화되어야하는 요소를 클릭 할 수 있습니다.Android에서 트랙볼 클릭 사용 안함

이 문제가 발생합니까?

편집 : 여기

//===================================================================================== 
public void show() 
{ 
    setVisibility(VISIBLE); 
    if (animationHandler_ != null) 
     return; 

    animationHandler_ = new Handler(); 
    animationHandler_.post(animateTask_); 
    requestFocus(); 
} 

답변

0

onTrackballEvent() 방법을 확인 표시 방법의 솔루션

//===================================================================================== 
protected void showProgressIndicator() 
{ 
    progressIndicator_.show(); 
} 

//===================================================================================== 
@Override 
public boolean onTrackballEvent(MotionEvent event) 
{ 
    return progressIndicator_.getVisibility() == View.VISIBLE; 
} 

//===================================================================================== 
protected void hideProgressIndicator() 
{ 
    progressIndicator_.hide(); 
} 

다음을합니다. 그런 다음 아무 것도하지 않고 메서드에서 직접 true를 반환합니다. 그러면 즉시 이벤트가 종료됩니다.

+0

사용자가 트랙볼로는 탐색 할 수 없지만 클릭 할 수 있기 때문에 솔루션이 정확하게 맞지 않습니다. 따라서 버튼에 초점을 맞추면 계속 클릭 할 수 있습니다. 해결책은 단지 진행 대화 상자에서 foucs를 요청하고 nTrackballEvent()를 구현하는 것이 었습니다. 귀하의 조언 주셔서 감사합니다 :) –

+0

u는 해결책을 게시 할 수 있습니까? – Pria

+0

일반 코드를 게시 할 수 있습니까? –

0

오버라이드 onTrackballEvent()가 작동하지 않습니다. dispatchTrackballEvent()를 재정의하고 아무 것도하지 않으면 true를 반환합니다.

1

활동이 화면에 나타나는 동안 트랙볼이 아무 것도하지 못하게하려면 다음 코드를 활동 하위 클래스에 추가하십시오.

@Override 
public boolean dispatchTrackballEvent(android.view.MotionEvent ev) { 
    return true; 
}; 

Google Nexus One 휴대 전화에서이를 테스트했으며 정상적으로 작동합니다.

+0

이 기술을 사용하여 에뮬레이터의 트랙볼을 끌 수 있습니까? –

+1

@MoJo 짝수를 재정의하고 기본 클래스를 호출하지 않기 때문에 작동합니다. 당신이 이벤트를 먹었다는 것을 Android에 알리기 때문에 사실로 돌아 오는 것도 중요합니다. – ForceMagic