通过XML自定义ListView问题

时间:2011-01-11 02:38:19

标签: android xml listview

我有一个简单的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?我做错了什么可能导致这种行为?

谢谢!

1 个答案:

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