(Android)如何填充ListView背景并保留标题透明度

Jon*_*n W 13 android listview background header transparent

我有一个自定义图像背景,填充ListView后面的整个屏幕.

ListView有一个包含一些数据的标题,然后是一个透明的10dp边距(允许我们看到一点背景图像),然后是一些更多的数据.在这个标题下面,在ListView的"主体"中,我需要让ListView的背景一直填充到屏幕的底部,即使其中的项目不是一直到底部.

如果我设置ListView的背景,那么即使只有几个项目(或根本没有项目),我也会得到所需的效果,总是填充到屏幕的底部.但这也掩盖了标题中的10dp透明分隔符,因此我无法再通过标题看到自定义背景.

可有人请点我下来得到正确的路径在屏幕的填充,同时保持头部里面的透明分隔?

有人提到我可能需要创建"假"项单元格,可用于创建ListView背景的错觉,而不会影响标题的透明分隔符.但是,我希望在可能的情况下找到一个更简单的解决方案..或者如果这最好的解决方案,看看有人能给我一些关于如何以最有效的方式实现这一目标的指示.

谢谢!

编辑:

这是我如何定义标题,虽然我认为这个问题与ListView有关,而不是我通过addHeaderView()添加到ListView的标题.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:background="@android:color/transparent" android:orientation="vertical">

    <include android:id="@+view_list_header/headertop"
        layout="@layout/view_list_item"/>

    **<LinearLayout android:id="@+view_list_header/ll_transparent_filler"
    android:layout_width="fill_parent" android:layout_height="10dp"/>**     

    <RelativeLayout android:id="@+view_list_header/sort" android:layout_width="fill_parent" android:layout_height="wrap_content">
        <TextView.../> <ImageView.../> <TextView.../>
    </RelativeLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

所以,我尝试了各种方法来创建10dp填充程序,目前我正在使用"空"10dp LinearLayout,以便我可以获取对它的引用并在我想要时将其可见性设置为GONE(我不做在我讨论的情况下)

我正在设置ListView的背景,如下所示:listView.setBackgroundResource(resource).

再次,当我将背景设置为此ListView时,我得到所需的背景行为始终填满整个屏幕,即使我已添加到列表中的项目数量(顺便说一下,所有项目都使用与我相同的背景资源)设置为ListView)不足以填满屏幕.但是当我这样做时,标题中的10dp"透明边距"是不可见的,因为在它后面,ListViews背景阻止了底层视图被看到.

我假设发生这种情况是因为ListView的背景也落后于页眉和页脚视图.

关键是,有很多方法可以在元素之间创建10dp"透明边距",以允许底层视图显示.我的问题在于为ListView"body"(即不是页眉/页脚)创建一个总是填满屏幕的背景,即使列表部分填充或为空,同时保留标题中的透明度以便我仍然可以看到ListView"后面"的视图.

War*_*zit 0

ListView您需要通过以下设置使项目透明ListView

android:background="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"
Run Code Online (Sandbox Code Playgroud)

然后您的项目布局需要具有任何颜色/图像(这将放在透明度之上)。

这应该可行,但在 Android 上将是一项繁重的工作,因为透明度确实对 Android 造成了影响,尤其是在有ListView大量 UI 更新的情况下。