ScrollView에 있지 않거나 ScrollView가 비활성화 된 ListView를 어떻게 작성합니까?

StackOverflow https://stackoverflow.com/questions/2419246

  •  19-09-2019
  •  | 
  •  

문제

ListAdapter와 항목 선택 등을 사용하는 것과 같은 ListView의 일부 제품을 원하지만 스크롤 뷰 부분을 원하지 않습니다. 나는 다른 방식으로 그 부분을 직접 구현하고 싶습니다 (왜 또는 어떻게하는지, 이것이 실제로이 질문의 요점이 아니므로 "왜"묻지 마십시오).

스크롤 뷰에 있지 않거나 스크롤이 비활성화 된 목록보기가있는 방법이 있습니까?

도움이 되었습니까?

해결책

ListView a ScrollView. ㅏ ListView 도구 적으로 스크롤합니다. 간단한 API를 통해 스크롤을 비활성화 할 수 있다고 생각하지 않습니다. 그렇다면 선택은 서브 클래스입니다 ListView 그리고 스크롤 행동을 무시하고 복제하는 방법을 찾으십시오. ListView 스크롤 행동을 제거하거나 직접 작성하십시오 AdapterView 그것은 당신이 원하는 방식으로 물건을 만듭니다.

다른 팁

이를 수행하는 또 다른 방법은 래핑하는 것입니다 ListView 요리 한 맞춤형 스크롤 솔루션에서. 단순히 높이를 설정하면 ListView 모든 행보다 정확히 높음 (목록보기 사용 LayoutParams), 그러면 그것은 정상적인보기처럼 작동하며 스크롤 할 수 없습니다. 따라서 다른 스크롤보기에 추가 할 수 있습니다. 이 방법의 어려움은 목록의 높이를 미리 알아야하므로 각 행의 높이를 알아야한다는 것입니다. 또한 이렇게하면 모든 행이 한 번에 생성되므로 뷰-레디클링 기능을 활용할 수 없습니다.

키를 미리 계산하는 쉬운 방법이 없다면 ListView 재정의함으로써 당신을 위해 그것을 할 수 있습니다 onMeasure 자신의 높이 사양을 제공합니다.

// Calculate height of the entire list by providing a very large 
// height hint.  But do not use the highest 2 bits of this integer; 
//  those are reserved for the MeasureSpec mode.
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
        MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top