我尝试向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>
答案 0 :(得分:1)
Aren列出了ListView的子项目吗?
是的,当ListView
通过关联的ListAdapter
创建它们时。
空视图不是列表项。它不是ListView
的孩子。这只是另一种观点。 AdapterView
切换自身和空视图的可见性,具体取决于AdapterView
是否为空。如果AdapterView
为空,则其自己的可见性设置为GONE
,空视图设置为VISIBLE
。如果AdapterView
不为空,则其自身的可见性设置为VISIBLE
,而空视图的可见性设置为GONE
。请参阅the source code for AdapterView
中的updateEmptyStatus()
。
考虑到可见性切换效果,典型的方法是使空视图与ListView
大致占据相同的空间。但是,这不是必需的。