我怎样才能在ListView的每个单元格中设置阴影?

我有一个Android ListView的自定义单元格。 这个自定义单元格是一个内部有一些视图的相对布局。 每个单元格之间都有一个空格,所以我想在单元格的底部添加一个阴影。

我一直在search,但找不到任何东西? 我想实现类似这样的事情:

在这里输入图像说明

谢谢!

Solutions Collecting From Web of "我怎样才能在ListView的每个单元格中设置阴影?"

可以通过以下两种方式来完成:

  1. 9补丁图像 – 点击链接了解9补丁
  2. 使用图层列表 – 在“res / drawable”中创build新文件,其中包含:

    <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item > <shape android:shape="rectangle"> <solid android:color="@android:color/darker_gray" /> <corners android:radius="5dp"/> </shape> </item> <item android:right="1dp" android:left="1dp" android:bottom="2dp"> <shape android:shape="rectangle"> <solid android:color="@android:color/white"/> <corners android:radius="5dp"/> </shape> </item> </layer-list> 

然后添加这个图层列表文件作为您的列表项目布局(即,Linearlayout等)的背景。

最简单的方法是将阴影制作成9色块。 这样的例子是:

方框9  - 补丁

作为一个9块的补丁,这比它需要的大得多,但是我想把它做大。

我应用这个层列表作为背景在你的列表项目布局,选定的颜色被禁用….

  <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item > <shape android:shape="rectangle"> <solid android:color="@android:color/darker_gray" /> <corners android:radius="5dp"/> </shape> </item> <item android:right="1dp" android:left="1dp" android:bottom="2dp"> <shape android:shape="rectangle"> <solid android:color="@android:color/white"/> <corners android:radius="5dp"/> </shape> </item> </layer-list> 

我还没有testing你的确切场景,但是这是你如何将一个透明的分隔线添加到列表视图:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ListView android:id="@+id/android:list" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="@android:color/transparent" android:dividerHeight="4dip"/> </LinearLayout> 

这是你需要的,如果你想以编程方式添加阴影线。

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@android:color/transparent" /> <stroke android:layout_marginLeft="10dip" android:layout_marginRight="10dip" android:width="match_content" android:color="@color/black" /> <size android:height="1dp" /> </shape> 

笔画的颜色可能不会显示为黑色,因为它呈现在alpha图层的顶部。 另外,目前这个画的是矩形的四边,而不仅仅是底边。 (我将不得不对这两个问题做进一步的研究)。

如果您需要帮助了解如何将它们连接在一起,请参阅本教程 。

创build一个图层列表矩形,从底部出发,在其xml中设置您的单元格视图自己的主背景色。

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!--shadow to bottom and right--> <!--by pushing offset from top and left--> <!--then set foreground-color in android:background in xml--> <item android:left="2dp" android:right="0dp" android:top="2dp" android:bottom="0dp"> <shape android:shape="rectangle"> <solid android:color="@android:color/darker_gray" /> </shape> </item> </layer-list> in your cell.xml: <RelativeLayout android:layout_width="match_content" android:layout_height="wrap_content" android:background="@drawable/shadow"> <RelativeLayout android:id="@+id/cell_stuff" android:layout_width="match_content" android:layout_height="match_content" android:background="@android:color/holo_orange_light"> <!--cell stuff--> </RelativeLayout> </RelativeLayout> 

或一体机

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!--shadow to bottom and right--> <!--by pushing offset from top and left--> <item android:left="2dp" android:right="0dp" android:top="2dp" android:bottom="0dp"> <shape android:shape="rectangle"> <solid android:color="@android:color/darker_gray" /> </shape> </item> <!--foreground-color to cover over non-shadow--> <!--need to also offset in opposite direction--> <item android:left="0dp" android:right="2dp" android:top="0dp" android:bottom="2dp"> <shape android:shape="rectangle"> <solid android:color="@android:color/holo_orange_light"/> </shape> </item> </layer-list> in your cell.xml: <RelativeLayout android:layout_width="match_content" android:layout_height="wrap_content" android:background="@drawable/shadow_allinone"> <!--cell stuff--> </RelativeLayout> 

在这里输入图像说明