设置布局阴影

时间:2017-08-08 12:26:37

标签: android android-layout

当你从它那里得到它时,我想要一个阴影:

android:background="@android:drawable/dialog_holo_light_frame"

有人知道这个源代码吗? 或者我如何实现这一点我只在布局底部有阴影而不是它周围?

3 个答案:

答案 0 :(得分:1)

您可以使用9 Patch shadow generator作为下面链接的布局背景。

Shadow generator

答案 1 :(得分:0)

shadow.xml

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<!-- Drop Shadow Stack -->
<item>
    <shape>
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />

        <solid android:color="#00AAAAAA" />

        <corners android:radius="3dp" />
    </shape>
</item>
<item>
    <shape>
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />

        <solid android:color="#10AAAAAA" />

        <corners android:radius="3dp" />
    </shape>
</item>
<item>
    <shape>
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />

        <solid android:color="#20AAAAAA" />

        <corners android:radius="3dp" />
    </shape>
</item>
<item>
    <shape>
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />

        <solid android:color="#30AAAAAA" />

        <corners android:radius="3dp" />
    </shape>
</item>
<item>
    <shape>
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />

        <solid android:color="#50AAAAAA" />

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

<!-- Background -->
<item>
    <shape>
        <solid android:color="@android:color/white" />

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

使用此作为整个布局的背景,如下所示:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/shadow"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent">

<---Describe your whole layout here>

</LinearLayout>

答案 2 :(得分:0)

有两种方式:

1)将 shadow.xml shadow.png 添加到 drawable 并在布局中使用

<强> shadow.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:bottom="8dp">
        <shape android:shape="rectangle" >
            <size android:height="1dp" />

            <solid android:color="#43000000" />
        </shape>
    </item>
    <item android:top="1dp">
        <shape
            android:dither="true"
            android:shape="rectangle" >
            <gradient
                android:angle="270"
                android:endColor="#00000000"
                android:startColor="#10000000" />

            <size android:height="8dp" />
        </shape>
    </item>

</layer-list>

your_layout.xml的示例:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:background="@drawable/shadow"
        android:orientation="vertical">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#FFFFFF"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"/>
    </LinearLayout>

2)另一种方法是解决方法

大部分阴影实际上在视图下方,细微的阴影也在上方。解决方法可能是使用非常高的高程值,如40dp:由于您的布局,底部将被隐藏,而顶部将被展开并看起来像一个普通的阴影。

在任何一种情况下,你都无法控制dp中的高程值,因为你无法确定你的阴影是否等同于android:elevation = 4dp投射的阴影。