我正在使用Android Listview,并且我想要一个1px分隔符在Listview项目的两侧意味着在顶部和底部两种不同的颜色。但问题是,我没有登录显示除法在底部。我尝试了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>
有几种方法可以实现这一点。一种简单的方法是在列表中完全隐藏分隔符(将分隔符宽度设置为0或将分隔符设置为null),并且只让每个列表项在顶部和底部分别包含一行。考虑以下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高的列表项,顶部有一条白线,底部有一条黑线。
似乎您想在列表视图的顶部和底部放置行(边界)。如果这是你想要的,我建议使用下面的代码。
在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
中单独创建一个将使它在几个地方使用而没有代码冗余。
我认为没有办法做到这一点。但是你可以为你的ListView
添加footerview
和headerview
。我想它会带来你想要的。
TextView tv1 = new Textview(this);
tv1.setBackgroundResource(R.drawable.dividerheight);
和
listview.addHeaderView(totalExpense);
listview.addFooterView(totalExpense);