强制ListViews上的Android快速滚动条在填充内绘制

时间:2013-08-02 17:56:57

标签: android android-layout android-listview

我有兴趣创建一个由透明标题和在标题后面滚动的列表视图组成的屏幕。我有一个缺点; FAST滚动条也在标题下方绘制。

出于某种原因,fastscrollbar似乎不尊重应用于列表视图的scrollbarStyle。您将在下图中注意到,普通滚动条工作正常,但powerscroll条位于透明标题后面。

FastScrollBar and NormalScrollBar example

不幸的是,我使用的列表视图通常会有数百个项目,因此快速滚动条是必需的。有没有办法设置未记录的“fastscrollStyle”?我对任何建议持开放态度!谢谢。

以下是用于参考的布局XML:

<?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>

这已在KitK的KitKat中修复,但GridView似乎仍然出现此问题。谷歌?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

这个错误似乎在4.4中得到修复。但是,在旧版本中,似乎没有已知的解决方法,只是将填充保留为0.