android:Shade over Layout及其内容

时间:2013-02-27 23:05:58

标签: android android-layout android-linearlayout shadow

我想在线性布局上设置绿色阴影,它的内容如下图所示

shadow view

这是UI的代码片段

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="168dp"
    android:layout_height="120dp" 
    android:orientation="vertical" 
    android:background="@drawable/grid_item_init_border"
    >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:padding="8dp"
        android:orientation="horizontal"
        android:background="@color/white"
        android:layout_margin="1dp">


    <ImageView
        android:id="@+id/image"
        android:layout_width="80dp"
        android:layout_height="match_parent"
        android:src="@drawable/no_image" />


        <TextView
            android:id="@+id/app_name" 
            android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/image"
        android:maxLines="2"
        android:ellipsize="end"
        android:layout_marginLeft="4dp"
        android:text="VVVVVVVVVVz"/>

        <TextView android:id="@+id/category"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/app_name"
            android:layout_below="@+id/app_name"
            android:lines="1"
            android:ellipsize="marquee"
            android:text="xxxxxxxxxxz"/>

    </RelativeLayout>


    <CheckBox
        android:id="@+id/share"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:layout_margin="4dp"
        android:paddingLeft="24dp"
        android:text="CheckBox" 
        android:button="@drawable/checkbox_white_gray" 
        android:background="@color/init_grid_item_checkbox_gray"/>

我应该在代码中添加什么来在布局上绘制阴影?

1 个答案:

答案 0 :(得分:1)

您应该在RelativeLayout中添加另一个视图,并按如下方式排列边距/填充:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="168dp"
android:layout_height="120dp" 
android:orientation="vertical" 
android:background="@drawable/grid_item_init_border">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="90dp"
    android:orientation="horizontal"
    android:background="@color/white"
    android:layout_margin="1dp">


  <ImageView
    android:id="@+id/image"
    android:layout_width="80dp"
    android:layout_height="match_parent"
    android:layout_marginLeft="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginDown="8dp"
    android:src="@drawable/no_image" />


  <TextView
    android:id="@+id/app_name" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/image"
    android:maxLines="2"
    android:ellipsize="end"
    android:layout_marginLeft="4dp"
    android:layout_marginTop="8dp"
    android:layout_marginRight="8dp"
    android:text="VVVVVVVVVVz"/>

  <TextView
    android:id="@+id/category"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="8dp"
    android:layout_marginBottom="8dp"
    android:layout_alignLeft="@+id/app_name"
    android:layout_below="@+id/app_name"
    android:lines="1"
    android:ellipsize="marquee"
    android:text="xxxxxxxxxxz"/>

  <View android:id="@+id/overlay"
    layout_width="match_parent"
    layout_height="match_patent"
    background="@drawable/green_overlay"/>

 </RelativeLayout>


 <CheckBox
    android:id="@+id/share"
    android:layout_width="match_parent"
    android:layout_height="30dp"
    android:layout_margin="4dp"
    android:paddingLeft="24dp"
    android:text="CheckBox" 
    android:button="@drawable/checkbox_white_gray" 
    android:background="@color/init_grid_item_checkbox_gray"/>


</LinearLayout>

其中@drawable/green_overlay是您的叠加层(颜色,形状,图像甚至是9个补丁)。如果您需要按下/未按下状态,您甚至可以使用selector(看看here