2013-08-02 1 views
8

나는 투명 헤더와 헤더 뒤에 스크롤 목록보기로 구성된 화면을 만드는 데 관심이 있어요. 나는이 결함을 하나의 결함으로 처리했다. FAST 스크롤 막대는 머리글 아래에도 그립니다.안쪽 여백 안쪽에 그리기 ListViews에 안드로이드 빠른 스크롤 막대

빠른 스크롤 막대는 목록보기에 적용된 scrollbarStyle을 고려하지 않습니다. 아래의 이미지에서 일반적인 스크롤 막대는 정상적으로 작동하지만 파워 스크롤 막대는 투명 헤더 뒤에 있습니다.

FastScrollBar and NormalScrollBar example

불행히도 내가 사용하고있는의 ListView는 종종 수백 개의 항목이있을 것이다, 그래서 fastscrollbar는 필수입니다. 문서화되지 않은 "fastscrollStyle"을 설정하는 방법이 있습니까? 나는 어떤 제안에 열려있다! 고맙습니다.

이 ListView에 대한 킷캣 수정되었습니다
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 

    <ListView 
     android:id="@+id/myListView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:clipToPadding="false" 
     android:fastScrollEnabled="true" 
     android:scrollbars="vertical" 
     android:scrollbarStyle="insideOverlay" 
     android:paddingTop="50dp"/> 

    <TextView android:text="My Header" 
       android:gravity="center" 
       android:background="#8fff0000" 
       android:layout_width="fill_parent" 
       android:layout_height="50dp"/> 
</RelativeLayout> 

는, 그러나의 GridView 여전히이 문제를 전시 나타납니다 여기

참조의 레이아웃 XML입니다. Google?

+0

relativelayout 대신 linearlayout을 사용하십시오. 상단에 헤더가 있고 헤더 아래에 listview 위치가 설정됩니다. Listitems는 머리글과 스크롤바 아이콘 뒤에 표시되지 않습니다. – Tugrul

+0

빠른 스크롤바가 listview의 수직 채우기를 존중하면서 listview 항목을 헤더 뒤에 그리기를 원합니다. Linearlayout에는 빠른 스크롤이 없으며 수천 개의 항목을 추가하면 성능이 매우 떨어집니다. :-) – supereee

+0

이 피드백에 대한 Thx. ;) – Tugrul

답변

1

가장 좋은 해결책은 다른 레이아웃과 목록보기를 분리하는 것인데, 여기서 주 relativelayout보기는 부모이고 다른 레이아웃은 자식입니다.

EX.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 
    <RelativeLayout 
       android:id"@+id/layoutHeader" 
       android:layout_width="fill_parent" 
       android:layout_height="50dp" 
       android:layout_alignParentTop="true"> 

       <TextView android:text="My Header" 
         android:gravity="center" 
         android:background="#8fff0000" 
         android:layout_width="fill_parent" 
         android:layout_height="50dp"/> 
    </RelativeLayout> 

    <RelativeLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="+id/layoutHeader"> 
    <ListView 
     android:id="@+id/myListView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:clipToPadding="false" 
     android:fastScrollEnabled="true" 
     android:scrollbars="vertical" 
     android:scrollbarStyle="insideOverlay" 
     android:paddingTop="50dp"/> 
    </RelativeLayout> 
</RelativeLayout> 
+0

불필요하게 더 큰 뷰 계층을 생성하는 동안 단순히 헤더 바로 앞에 listview를 그리지 않습니까? – supereee

0

이 버그는 4.4에서 수정 된 것 같습니다. 그러나 이전 버전에서는 패딩을 0으로 두는 것 외에 다른 해결 방법이없는 것으로 보입니다.

관련 문제