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

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

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

在这里输入图像说明

谢谢!

  • Android SDKpipe理器无法parsingxml
  • 在Android中命名XML Element的id的最佳实践是什么?
  • 如何在LinearLayout类中充气Android视图?
  • Android RatingBar在某些设备上显示黑色叠加
  • 如何将超链接添加到首选项屏幕(PreferenceActivity)
  • 我怎样才能创build一个完全在XML中的标签布局?
  • 使用水平滚动嵌套的RecyclerView中的滚动行为
  • 如何在Android中以编程方式创build菜单?
  • 可以通过以下两种方式来完成:

    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> 

    在这里输入图像说明