我使用矩形框来显示一些的ImageView在它。我想给箱外的影子像这样如何给android中的框添加阴影?
我使用这个XML内容
<corners android:radius="3dp" />
<stroke
android:width="1dp"
android:color="#AAAAAA" />
<solid android:color="#FFF" />
,并得到这个盒子
请问有人能告诉我该怎么做吗?
我使用矩形框来显示一些的ImageView在它。我想给箱外的影子像这样如何给android中的框添加阴影?
我使用这个XML内容
<corners android:radius="3dp" />
<stroke
android:width="1dp"
android:color="#AAAAAA" />
<solid android:color="#FFF" />
,并得到这个盒子
请问有人能告诉我该怎么做吗?
使用9补丁来做出恰当的背景
可悲的是,你不能添加通过代码/ XML的阴影在Android中,除非你想开始重写的onDraw和手动绘制阴影(这可能不会给你很好的结果,如果你问我的话,计算量会很大,而且不值得花时间)。
您需要使用9补丁解决方案。
我觉得你的痛苦,但... :)
试试这个代码, 我已经用两个布局完成,但您可以将其合并到一个
在XML文件中编写代码
<RelativeLayout
android:id="@+id/home_screen"
android:layout_height="150dp"
android:layout_width="fill_parent"
android:layout_marginTop="50dp"
android:background="@drawable/background_border" >
<LinearLayout
android:layout_height="150dp"
android:layout_width="fill_parent"
android:layout_margin="10dp"
android:background="@drawable/home_border" >
<ImageView
android:id="@+id/iv"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_margin="10dp"
android:background="@drawable/menu_background" />
</LinearLayout>
</RelativeLayout>
and the two xml in res/drawable is here
home_border.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item android:left="1dp" android:right="1dp" android:top="1dp"
android:bottom="1dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<stroke android:width="10dp" android:color="@android:color/white" />
<corners
android:bottomRightRadius="1dp"
android:bottomLeftRadius="1dp"
android:topLeftRadius="1dp"
android:topRightRadius="1dp"/>
</shape>
</item>
</layer-list>
and background_border.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item android:left="-10dp" android:right="-10dp" android:top="-10dp"
android:bottom="-10dp">
<shape android:shape="rectangle">
<solid android:color="#884d4d4d" />
<stroke android:width="1dp" android:color="@android:color/white" />
</shape>
</item>
</layer-list>
试试这个。这里#884d4d4d是你的透明色的颜色代码是两种颜色透明和灰色的组合
我使用了教程和来自以下链接的图像,它给了我一个完美的阴影,(我只需要调整垫衬我的喜好): http://sapandiwakar.in/adding-shadows-to-views-in-android-using-9-patch-image/
只需添加阴影父视图和最重要的是你的正常背景:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shadow"
android:paddingBottom="4dp"
android:paddingLeft="5dp"
android:paddingRight="4dp"
android:paddingTop="4dp"
android:layout_gravity="center"
>
<LinearLayout
android:id="@+id/relativeLayout1"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/popup_menu_background">
<ListView
android:id="@+id/listViewMenu"
android:layout_width="150dp"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
</LinearLayout>
和结果:
好的..谢谢你的建议。 :) – Nidhi