2012-06-21 3 views
2

FrameLayout 내에서 애니메이션 GLSurfaceView 위에 배치 된 여러 개의 다른 LinearLayouts에있는 몇 개의 버튼으로 구성된 메뉴를 설계했습니다. 사용자가 인터페이스에서 버튼을 클릭하면 다음 레이아웃을 만들기 전에 현재 레이아웃의 가시성을 GONE으로 설정합니다. VISIBLE 사용자가 레벨을 선택하면 게임 플레이가 시작되고 모든 레이아웃은 GONE입니다 (오른쪽의 컨트롤 막대는 제외). 화면이지만 FrameLayout에는 포함되어 있지 않습니다.)일부 장치에서는 FrameLayout의 자식을 클릭 할 수 없습니다.

대부분의 휴대 전화에서 메뉴는 매력처럼 작동하지만 Xperia Ray에 대한 빠른 테스트 만 수행하여 버튼을 놓을 수 없어서 아무데도 갈 수 없음을 확인했습니다. 클릭하지 마세요. 대부분의 onClick Listener에 Log.d 태그가 설정되어 있으며이 경우 Logcat에 표시되지 않으므로 Listener가 전혀 실행되지 않는 것처럼 보입니다. 나는 또한 GLSurfaceView가 자신의 TouchEventListener에서 아무것도 리턴하지 않는다는 것을 알아 차렸다. 최상위 메뉴에서 GLSurfaceView를 두드려서 트리거 한 함수는 사용할 수 없지만 Logcat에는 여전히 메시지가 표시됩니다.

FrameLayout을 사용하는 방식과 관련이 있다고 생각했습니다. documentation에는 자식이 하나만 있어야한다고 나와 있지만 Android 개발자가 읽은 또 다른 기사에서는 FrameLayout 내부의 ImageViews를 통해 텍스트를 표시하여 캡션 이미지를 시연했습니다.

마지막으로, 에뮬레이터에서 테스트 한 결과, 안드로이드 v2.3 및 안드로이드 v4 모두 광선과 동일한 동작을 나타내는 것으로 나타났습니다. 현재이 앱만이 내 앱을 완벽하게 실행하는 안드로이드 v2.2를 제외하고는 확신 할 수있는 유일한 앱입니다. 나는 에뮬레이터에 대한 테스트 결과를 신뢰하는 것을 주저합니다.

계속 진행할 오류 메시지가 없으므로 개인적으로보고 싶지 않지만 해결책을 제안 할 수 있습니까?

답변

1

해결책을 찾았습니다.

내 레이아웃에서 z- 순서로 표시되고 기본적으로 표시되는 내 레이아웃에 매달려있는 ScrollView이 있습니다. 이 뷰의 가시성을 토글하는 대신, 나는 아이 레이아웃을 위해 그렇게했습니다. 죄송합니다.

내가 테스트 한 대부분의 기기에서, 빗나간 ScrollView은 내 앱의 기능에 영향을 미치지 않았습니다. 아마도 빈 레이아웃이 버튼을 클릭 할 수 있었기 때문일 것입니다. 그러나 Xperia Ray와 같은 일부 장치는 클릭이 레이아웃을 통해 전달 될 수 있는지 (성능 결정일지도 모름) 좀 더 엄격합니다.

ScrollView은 레이아웃에서 필수적인 부분이므로 제거하지 못했습니다. 대신 android:visibilty 속성을 ScrollView에 부여하여 인터페이스에서 필요하고 사용자가 버튼을 클릭 할 수 없게 될 때까지 GONE이되도록합니다.

+0

하지만 ScrollView를 표시 할 수 없으면 어떻게해야합니까? 그것을 시도했지만 내 ScrollView 안의 모든 것이 보이지 않게됩니다. :( –

관련 문제