2012-07-18 1 views
13

현재 일정을 검색하고 볼 수있는 응용 프로그램을 개발 중입니다. 스케줄을 표시하기 위해 Look & Feel을 좋아하기 때문에 Google IO 2011 앱에서 TimeRulerView (및 BlocksLayout 및 BlockView) 자바 소스 파일을 사용했습니다. 소스 코드는 https://github.com/underhilllabs/iosched2011에서 찾을 수 있습니다. (구글은 IO2012의 코드로 대체했다.)Android Jelly Bean에서 표시되지 않는보기

내 Galaxy Nexus가 어제 젤리 빈 (4.1.1)을 업데이트 한 이래로 TimeRulerView (및/또는 다른 하나)가 더 이상 표시되지 않습니다.

이상한 점은 실제로는 여전히 있지만 보이지 않는 것입니다. 일반적으로 타이머러에있는 길이의 스크롤바를 볼 수 있습니다. 또한 일반적으로보기에서 블록을 클릭 할 때 약간의 팝업이 표시되는데이 문제는 여전히 타이머러 또는 블록을 보지 못했을 때 발생합니다.

JBIG에서 원래 IO2011 응용 프로그램을 테스트했지만 아무것도 보이지 않으므로 문제가 뷰 또는 JellyBean이 뷰를 렌더링하는 방식 (프로젝트 버터 중 하나)에 있습니다. ?).

ICS (앱 작동), JB (앱 작동 안함) 및 GoogleIO2011 앱의 스크린 샷은 여기 (https://dl.dropbox.com/u/7102660/TimeRulerView_JellyBean_problem.zip)를 참조하십시오.

+0

ImageViews에도 동일한 문제가 있습니다. 젤리 빈으로 업데이트 한 이후 이미지가 더 이상 표시되지 않습니다. 레이아웃 공간이 적절하게 계산되지만 (사용자 정의 배열 어댑터의 getView에서 조작합니다.) – eftokay83

+2

뷰의 범위를 보려면 hierarchyviewer 도구를 사용하십시오. widht/height가 0이거나 자식보기에 문제가 있거나 크기가 올바르게 계산되고 내용이 그리기가 아니라는 것을 알게됩니다. 이 정보로 계속 이동할 수 있습니다. –

답변

4

Chris의 답변 덕분에 하드웨어 가속 설정으로 놀았습니다. iosched2011 코드도 사용하고 block_content.xml 파일 내에서 BlocksLayout View에서 라인 android:layerType="software" 만 제거해야했습니다.

+0

이 솔루션은 마침내 내 사용자 정의보기가 나타나게했지만 그 중 일부는 결함이 있거나 잘못 표시되었습니다. 안드로이드 : hardwareAccelerated = "false"를 manifest의 액티비티에 추가해야만 정상적으로 작동하기 시작했습니다. – SilithCrowe

7

Hardware acceleration과 관련이 있습니까? 최근에 ICS가있는 몇 대의 휴대 전화에서 문제가 발생했지만 모든 휴대 전화/기기가 영향을받지는 않았습니다. hardwareAccelerated 태그를 내 매니페스트에 추가해도 문제가 해결되지 않았으며 하드웨어보기를 원하지 않는 특정보기에이를 정의해야했습니다. 내 솔루션은 내 xml 레이아웃에 android:layerType = "소프트웨어"를 사용하고 자바 코드에는 setLayerType (LAYER_TYPE_SOFTWARE, null)을 사용했습니다.

EDIT :이 문제를 더 많이 테스트하면 Jelly Bean의 setLayerType을 사용하여 내 문제가 해결되지 않았습니다. ICS에서 레이어 유형을 소프트웨어로 설정하면 문제가 해결되었습니다. 보기를 표시 할 수있는 유일한 방법은 전체 응용 프로그램 또는 특정 활동을 android:hardwareAccelerated="false"으로 설정하는 것입니다.

+0

android : hardwareAccelerated = "false"는 나를 위해 결국이 문제를 해결했으며 Stefan Arn의 솔루션입니다. – SilithCrowe