在最后一个项目之后但在页脚之前的不同Listview分隔符

时间:2014-10-28 07:12:08

标签: android android-layout android-listview

我通过从Listview中删除my_list.xml默认分隔符来设置我的自定义分隔符:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/app_background">

    <ListView android:id="@id/android:list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="@null"
        android:dividerHeight="0dp"/>

</LinearLayout>

并在View中的每个项目下添加my_item.xmlRelativeLayout保留项目图标; LinearLayout保存项目文字):

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:background="@color/white">

    <RelativeLayout
        android:layout_width="60dp"
        android:layout_height="match_parent">

        <ImageView
            android:id="@+id/icon"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:src="@drawable/staticmap" >
        </ImageView>

    </RelativeLayout>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white">

        ...

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#E4E4E4"
            />

    </LinearLayout>

</LinearLayout>

由于我在每个项目文本下都有托管分隔符(View),但在项目图标下没有。

在列表中的最后一项之后,我希望分隔符在图标下也可见:

what I want to have

以下是布局通胀:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setListAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(),
            R.layout.my_item, R.id.label, DummyContent.ITEMS));
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.my_list, null);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    getListView().addFooterView(getLayoutInflater(savedInstanceState).inflate(R.layout.my_footer, null));
    super.onActivityCreated(savedInstanceState);
}

1 个答案:

答案 0 :(得分:0)

只需在图标下添加相同的分隔视图。

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:visibility="gone"
    android:background="#E4E4E4"/>

并通过检查它是否是getView()

中的最后一项,使其在ListView中可见

或者

只需将该全宽分隔线视图添加到页脚,并使用相同的getView()

隐藏最后一项中的当前分隔线视图