ListView项目顶部和底部的ListView分隔符

时间:2013-04-23 10:53:44

标签: android android-layout listview

我正在使用Android Listview并且我想在listview项目的两侧使用1px分隔符意味着在两种不同颜色的顶部和底部。但问题是我没有登录以显示底部的分隔符。我尝试android:layout_below,但显示无效。

这是Listview代码

<ListView
        android:id="@+id/myphnview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@drawable/dividerheight"
        android:background="#E9EAEC"
        android:clickable="true"
        android:divider="@drawable/dividerheight" >
    </ListView>

这是我用于顶部边框的xml文件。 dividerheight.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape android:shape="line" >
            <stroke android:color="#c6c7c9" />

            <size android:height="1px" />
        </shape>
    </item>


</layer-list>

这是我的行的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rowlayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#E9EAEC"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2" >

        <ImageView
            android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp" 
            android:background="@drawable/ic_launcher"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_weight="1" >

        <TextView
            android:id="@+id/file_name"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:layout_margin="5dp"
            android:text="Hello Android "
            android:textColor="@android:color/black"
            android:textSize="20dp" >
        </TextView>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp" >

        <ImageView
            android:id="@+id/share_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:background="@drawable/ic_launcher"/>
    </LinearLayout>



</LinearLayout>

3 个答案:

答案 0 :(得分:18)

有几种方法可以实现这一目标。一种简单的方法是在列表中完全隐藏分隔符(将分隔符宽度设置为0或将分隔符设置为空),并让每个列表项包含顶部的一行和底部的一行。考虑一下这个xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="60dp">

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_alignParentTop="true"
        android:background="@android:color/white" />

    <LinearLayout ...>
        <!-- this is your current list item LinearLayout -->
    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_alignParentBottom="true"
        android:background="@android:color/black" />

</RelativeLayout>

由于您已经在使用自定义适配器,因此只需在适配器的getView方法中使用上述XML作为列表项布局。这将产生60dp的列表项,顶部有白线,底部有黑线。

答案 1 :(得分:4)

您似乎想在列表视图的顶部和底部放置线条(边框)。如果这是你想要的,我会建议下面的代码。

以下面的方式在 res / values / styles.xml 中准备一行。

<style name="Line">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">2px</item>
    <item name="android:layout_marginLeft">10dp</item>
    <item name="android:layout_marginRight">10dp</item>
    <item name="android:background">@drawable/line_gradient</item>
</style>

<强> RES /抽拉/ line_gradient.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
<gradient
    android:startColor="@color/white"
    android:endColor="@color/white"
    android:centerColor="@color/blue"
    android:useLevel="false"
    android:type="linear"
    android:angle="0"/>
</shape>

最后以下面的方式使用您需要的线。

 <View
        style="@style/Line"/>
<ListView
................
................
/>
 <View
        style="@style/Line"/>

这是我在我的应用中使用的代码,但您可以根据需要自定义或着色。即使您可以在listview的正上方和下方创建视图。但是在styles.xml中单独创建将使其在几个地方使用而无需代码冗余。

答案 2 :(得分:2)

我认为没有办法做到这一点。但您可以为footerview添加headerviewListView。我认为它会带来你想要的东西。

例如:

TextView tv1 = new Textview(this);
tv1.setBackgroundResource(R.drawable.dividerheight);

listview.addHeaderView(totalExpense);
listview.addFooterView(totalExpense);

我希望这会对你有所帮助。