ListView将空视图添加到root / parent而不是self?

时间:2015-05-27 22:11:21

标签: android android-listview android-5.0-lollipop

我尝试向ListView添加自定义空视图,如this Q&A所示。但ListView似乎将空视图添加到其父级,或者可能添加到根ViewGroup,而不是添加到自身。我在这里做错了吗?

我创建了一个演示问题的小布局文件。请注意空视图如何放置在活动的左上角,完全位于ListView

之外
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/top_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Some text above the ListView" />

    <ListView
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/top_text" />

    <TextView
        android:id="@android:id/empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ListView empty text" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

  

Aren列出了ListView的子项目吗?

是的,当ListView通过关联的ListAdapter创建它们时。

空视图不是列表项。它不是ListView的孩子。这只是另一种观点。 AdapterView切换自身和空视图的可见性,具体取决于AdapterView是否为空。如果AdapterView为空,则其自己的可见性设置为GONE,空视图设置为VISIBLE。如果AdapterView不为空,则其自身的可见性设置为VISIBLE,而空视图的可见性设置为GONE。请参阅the source code for AdapterView中的updateEmptyStatus()

考虑到可见性切换效果,典型的方法是使空视图与ListView大致占据相同的空间。但是,这不是必需的。