2013-09-25 39 views
2

我使用矩形框来显示一些的ImageView在它。我想给箱外的影子像这样enter image description here如何给android中的框添加阴影?

我使用这个XML内容

<corners android:radius="3dp" /> 

<stroke 
    android:width="1dp" 
    android:color="#AAAAAA" /> 

<solid android:color="#FFF" /> 

,并得到这个盒子 enter image description here

请问有人能告诉我该怎么做吗?

回答

1

可悲的是,你不能添加通过代码/ XML的阴影在Android中,除非你想开始重写的onDraw和手动绘制阴影(这可能不会给你很好的结果,如果你问我的话,计算量会很大,而且不值得花时间)。

您需要使用9补丁解决方案。

我觉得你的痛苦,但... :)

+0

好的..谢谢你的建议。 :) – Nidhi

0

试试这个代码, 我已经用两个布局完成,但您可以将其合并到一个

在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是你的透明色的颜色代码是两种颜色透明和灰色的组合

2

我使用了教程和来自以下链接的图像,它给了我一个完美的阴影,(我只需要调整垫衬我的喜好): 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> 

和结果:

enter image description here