我有一个简单的ListActivity,它使用我想自定义ListView的ListAdapter。这是我的onCreate,我指定使用View而不是使用setListAdapter()生成的默认ListView:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// set the listview, empty listview
setContentView(R.layout.main);
getListView().setEmptyView(findViewById(android.R.id.empty));
// set the list properties
getListView().setOnCreateContextMenuListener(this);
.
.
.
<code snipped>
.
.
.
setListAdapter(adapter);
}
你可以看到我也在设置emptyView。这是XML文件main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdge="vertical"
android:dividerHeight="5dp" />
<TextView
android:id="@android:id/empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:singleLine="false"
android:text="@string/message_empty_list" />
</LinearLayout>
我的问题是ListView在正确应用dividerHeight时忽略了:fadingEdge指令,当它在XML中时;但是,如果我以编程方式设置fadingEdge,它就可以工作,即:
getListView().setVerticalFadingEdgeEnabled(true);
为什么listview会特别忽略fadingEdge?我做错了什么可能导致这种行为?
谢谢!
答案 0 :(得分:0)
android:id="@id/android:list"
应该是
android:id="@iandroid:id/list"
我甚至不确定为什么编译。
这就是你应该如何使用自定义xml进行列表活动。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<TextView
android:id="@android:id/empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="No data found"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceMedium" />
</FrameLayout>