我有ListFragment
并且我想设置其空视图,因此我使用以下代码:
View emptyView = getLayoutInflater().inflate(R.layout.collection_empty_view, null);
detailFragment.getListView().setEmptyView(emptyView);
用于以下xml布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="@string/empty_collection" />
<Button
android:id="@+id/btn_add_legislation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="addText"
android:text="@string/action_add_text" />
</LinearLayout>
但是什么都没有出现!
我尝试detailFragment.getListView().setEmptyText()
, 工作了!我做错了吗?
答案 0 :(得分:7)
空视图必须与列表视图位于同一视图层次结构中。以这种方式膨胀是行不通的。
通常我会使用以下格式创建布局:
<Layout>
<ListView/>
<View android:id="@+id/empty"/>
</Layout>
其中空视图是我想用作“空视图”的视图。然后在创建中,我获得对空视图的引用,并使用该引用调用setEmptyView()。
以下是Android文档中的示例(请查看documentation,它应该适用于SherlockListFragment):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<ListView android:id="@id/android:list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00FF00"
android:layout_weight="1"
android:drawSelectorOnTop="false"/>
<TextView android:id="@id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:text="No data"/>
</LinearLayout>
答案 1 :(得分:1)
您可以在我的应用程序片段中尝试一些我正在做的事情。 我不知道这是不是很好的做法,但它有效!
View emptyView = getActivity().getLayoutInflater().inflate(R.layout.empty, null);
getActivity().setContentView(emptyView);