2010-06-01 4 views
25

꽤 간단한 GridView에서 이상한 스크롤 문제가 있습니다. Grid의 각 항목은 단순히 ImageView 및 TextView입니다. 활동 자체는 단순히 응용 프로그램 선택자 일뿐입니다. Android의 기본 App Tray의 거친 버전처럼 보입니다.안드로이드에서 GridView의 스크롤링 문제

내보기를 스크롤하는 데 시간이 많이 걸리면 필연적으로 맨 위 아이콘 행을지나 공백 화면으로 계속 스크롤 할 수있게되고 스크롤 막대가 사라져 버립니다.

내가보기의 맨 위로 가끔씩, 그리고 보통 과도한 스크롤 후에 만 ​​나타나는 것은 아닙니다.

맨 아래 줄이 화면 아래에서 사라지기 전에 문제를 발견하고 잡으면, 일반적으로보기를 통해 뒤로 스크롤하여 일부 아이콘이 누락 될 수 있습니다. 그리드에는 빈 공간이 있는데, 그 아이콘이 기괴한 위치로 옮겨 졌기 때문에 뷰가 맨 위를 스크롤 할 수 있습니다.

이것은 기본 Hello World를 넘어서는 첫 번째 Android 앱이므로 레이아웃 파일에 무엇인가를 망칠 가능성이 높습니다. 나는 또한 이것이 아마도 매우 혼란 스럽다는 것을 깨닫고 누군가가 이것을 경험하고 나의 검색 능력이 그것을 찾지 못하기를 바라고 있습니다.

다른 사람이 유용하다고 생각하면 레이아웃 파일이나 다른 코드를 게시 할 수 있습니다.

아, 그리고 프로그램은 1.5에 대해 만들어졌지만, 내 전화기에서 2.2 (그 주간의 snuck이었던 2.2의 상태)에서 실행 중입니다. 필자는 에뮬레이터에서이를 테스트 할 수있는 앱이 충분하지 않지만 누군가가 필요하다고 느낀다면 아마 뭔가를 설정할 수 있습니다.

문제에 대한 도움을 미리 감사드립니다.

+0

1) 활동/목록/항목 레이아웃에 대한 코드를 게시하십시오. 2) 어댑터 코드 –

+0

을 해결할 수 있습니까?이 질문은 – pengwang

답변

1

GridView의 맨 아래에서 스크롤을 풀고 다시 매우 빠르게 두 번 돌아 가면 결국 뷰의 요소가 원래 있던 위치의 "왼쪽"으로 한 칸 이동합니다. . 이 경우 GridView 맨 위로 스크롤 할 수 있습니다. 목록의 상단에 도달하면 항목 1이 그 자리에 있고 그 행 위의 검음 만있는 항목 0이 표시되지 않습니다.

이 상황에서 항목을 클릭하면 목록이 재설정되고 모든 항목이 정상으로 돌아갑니다.

이것은 버그 여야합니다. 그것은 매우 재현성이 있으며, 내가하고있는 어떤 것도 믹스를 일으키는 것 같지 않습니다. 이 시점에서 목록 어댑터에 추가가 중지되었습니다.

지금은 Android 2.3.3을 사용하고 있습니다.

+0

"이 시점에서 목록 어댑터에 추가가 중지되었습니다."라고 대답합니다. 나 더 많은 detail.i이 질문을 만난다. http://stackoverflow.com/questions/5944250/gridview-cannot-show-image – pengwang

7

시도 할 수 있습니다,하지만 난 그래서 pengwang 대답은 나에게 도움이되지 않았다 GridViewImageView 년대를 게시 할 수 있습니다. 이 버그에 대한 설명을 찾았습니다. https://code.google.com/p/android/issues/detail?id=16218

문제는 GridView가 현재 높이가 다른 항목을 처리하지 않는다는 것입니다.

내 솔루션은 GridView의 모든 항목에 대해 정확히 지정된 layout_height을 사용하는 것입니다.

+0

고마워. 이상한 증상. –

+0

감사합니다. 이로 인해 비슷한 문제가 해결되었습니다. 먼저,'getView (final int position, View convertView, ViewGroup parent)'에서 프로그래밍 방식으로'TextView'와'Button'을 추가합니다.'getViewTreeObserver(). addOnGlobalLayoutListener (new ViewTreeObserver.OnGlobalLayoutListener() { ...}'마지막 행 위치를 사용하여'viewGroup.getChildAt (position)'을 사용하여 모든 자식 높이를 설정하여 각 행의'View' 사이를 이동했습니다. – ArtiomLK

0

저는이 똑같은 문제를 직접 만났습니다. 나는 다른 높이의 이미지 격자를 가지고 있습니다. 의 GridView, GridView.LayoutParams 및 GridLayout과에 안드로이드 개발자의 문서를 읽은 후, 나는 내 문제 해결 두 가지 않았다 :

  1. 각 행에서 가장 높은 이미지를 발견하고 행의지도에 높이를 저장을 -> rowHeight. 다운로드 한 각 이미지의 가로 및 세로 정보가 있으므로 어댑터의 addAll (items) 메서드를 재정 의하여 쉽게 처리 할 수 ​​있습니다.

  2. getView()에서 GridView.LayoutParams (MATCH_PARENT, getRowHeight (position))를 작성하여 각 그리드 항목을 특정 행의 최대 행 높이로 설정합니다.

  3. LinearLayout 내에서 ImageView를 랩핑하십시오. 다른 레이아웃을 시도했지만 LinearLayout이 작동합니다. 이미지보기의 경우 android : scaleType = "fitCenter"및 android : adjustViewBounds = "true"를 설정하십시오.

위의 3 단계를 거친 후 마침내 표정이 바뀌 었습니다. 높이가 다르기 때문에 스크롤하는 데 문제가 없습니다.

관련 문제