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

标签 android listview background header transparent

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

ListView 有一个包含一些数据的标题,然后是透明的 10dp 边距(允许我们看到一点背景图像),然后是更多数据。在这个标题下方,在 ListView 的“正文”中,我需要使 ListView 的背景一直填充到屏幕底部,即使其中的项目没有一直填充到底部。

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

谁能给我指明正确的路径,让两者填充屏幕,同时保持页眉内的透明分隔线?

有人顺便提到我可能需要创建“假”项单元格,这些单元格可用于创建 ListView 背景的幻觉,而不会影响页眉的透明分隔线。但是,如果可能的话,我希望找到一个更简单的解决方案。或者如果那个最好的解决方案,看看是否有人可以给我一些关于如何以最有效的方式完成它的指示。

谢谢!

编辑:

这是我定义 header 的方式,尽管我认为这个问题与 ListView 的关系比我通过 addHeaderView() 添加到 ListView 的 header 更多。

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

因此,我尝试了多种创建 10dp 填充符的方法,目前我使用的是“空”10dp LinearLayout,以便我可以获得对它的引用并在需要时将其可见性设置为 GONE(我我正在讨论的情况下不做)

我正在这样设置 ListView 的背景:listView.setBackgroundResource(resource)。

同样,当我为这个 ListView 设置背景时,我得到了背景总是填满整个屏幕的期望行为,即使我添加到列表中的项目数量(顺便说一句,它们都使用相同的背景资源)我设置为 ListView)不足以填满屏幕。但是当我这样做时,标题中的 10dp“透明边距”是不可见的,因为在它后面,ListViews 背景阻止了底层 View 的显示。

我假设发生这种情况是因为 ListView 的背景也位于页眉和页脚 View 的后面。

要点是,有很多方法可以在元素之间创建 10dp 的“透明边距”,以允许底层 View 显示出来。我的问题在于为始终填充屏幕的 ListView“正文”(即不是页眉/页脚)创建背景,即使列表部分填充或为空 同时保留标题中的透明度,这样我仍然可以看到 ListView“背后”的 View 。

最佳答案

您需要通过在 ListView 上设置以下内容使 ListView 中的项目透明:

android:background="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"

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

这应该可行,但在 Android 上将是繁重的工作,因为透明度确实会对 Android 造成影响,尤其是当它位于 ListView 中时,其中有大量 UI 更新。

关于android - (Android) 如何填充 ListView 背景并保持标题透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10459468/

相关文章:

Android 通知超时监听器

java - XMPP 和安卓

java - Android:在 OnClickListener 中获取 View 的文本

android - 能够为谷歌地图 Intent 选择方向类型

mysql - 如何加快vb.net中listview的填充速度

android - 扩充布局 DSLV 库时出错

java - 在 Android 中添加 ListView 子项文本

image - 如何使用跷跷板为面板背景设置图像?

C# 类设计 - 事件和长时间运行的方法

swift - 当应用程序处于后台时,Alamofire 后台上传不会打印进度