繁体   English   中英

如何在线性布局中添加阴影-Android?

[英]How to add shadow to linear layout - android?

在我的android应用程序中,我必须实现类似于下面给出的图像: 在此处输入图片说明

我已经尝试过将阴影xmls用于线性布局,但是它似乎无法解决我希望的那样。 我正在使用的代码是:

<?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="5dp" android:left="5dp" android:bottom="15dp">
    <shape
        android:shape="rectangle">
        <solid android:color="@android:color/white"/>
        <corners android:radius="5dp"/>
    </shape>
</item>
</layer-list>

请提出我该如何实现。

您可以将9-patchImage的阴影作为背景,也可以将以下xml用作linearlayout的背景作为阴影

  <?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:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#02000000" />
            <corners android:radius="8dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#05000000" />
            <corners android:radius="7dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#10000000" />
            <corners android:radius="6dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#15000000" />
            <corners android:radius="5dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#20000000" />
            <corners android:radius="4dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#25000000" />
            <corners android:radius="3dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#30000000" />
            <corners android:radius="3dp" />
        </shape>
    </item>

    <!-- Background -->
    <item>
    <shape>
            <solid android:color="#ffffff" />
        <corners android:radius="3dp" />
    </shape>
   </item>
</layer-list>

从不需要阴影的任何一侧去除填充物

注意:

这不是我的,我是从很久以前的某个地方复制它的,找不到它可以给予应有的荣誉。 如果您知道其来源,请随时进行编辑并保留信用

我可能迟到了,但万一有人需要它。 您可以使用此工具http://inloop.github.io/shadow4android/ ,该工具可以制作带有阴影的图像,但不将其视为普通图像,而是特殊图像。 您将获得以.9.png而不是.png结尾的图像。应保留该.9,因为它将直接将Android Studio视为9补丁

然后将此图像添加到您的drawables文件夹中。 将其用作布局的背景,您将获得漂亮的自然阴影效果,直到现在我还从未见过任何可绘制图形的图形效果 这是您将获得的样本!

也许您可以使用CardView而不是LinearLayout,它提供了Som API来实现阴影

一种简单的方法是将布局放置在cardview中。提供高程等以使其更逼真。

<android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card_view"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        card_view:cardCornerRadius="4dp">

        <LinearLayout
            android:text="Hello Card"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        ...............

        </LinearLayout>

</android.support.v7.widget.CardView>

这样的事情应该可以解决问题:

<?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="5dp" android:left="5dp" android:bottom="15dp">
    <shape
        android:shape="rectangle">
        <solid android:color="@android:color/white"/>
        <corners android:radius="5dp"/>
    </shape>
</item>
</layer-list>

然后在您的LinearLayout中将图层列表添加为背景。

<LinearLayout
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background="@drawable/background_with_shadow"/>

您也可以参考此帖子以供参考。

编辑:将background_with_shadow.xml文件添加到res / drawable。

对于Android 5.0及更高版本,请参考以下内容: 定义阴影和剪切视图

该代码将符合您的要求

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item><layer-list>
            <item android:right="5dp" android:top="5dp"><shape>
                    <corners android:radius="3dp" />

                    <solid android:color="#D6D6D6" />
            </shape></item>
        <item android:bottom="3dp" android:left="3dp"><shape>
                <gradient android:angle="270" android:endColor="#E2E2E2" android:startColor="#BABABA" />

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

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

                <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
            </shape></item>
    </layer-list></item>

</selector>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM