15

所以我一直在网上搜索一种为布局显示简单阴影的方法,但没有合适的方法来做到这一点。
我发现的只是一种解决方法,您可以在要应用阴影的布局后面创建一个布局,然后将其调整为透明和其他一些东西。

有没有其他方法可以在不添加全新布局的情况下获得简单的布局阴影?

4

3 回答 3

47

我已经能够想出一个解决这个问题的方法,并且通过View在我们著名的布局下方添加一个,显示从一种颜色到另一种颜色的渐变。
通常,一种颜色是某种深灰色,第二种背景颜色(在我的情况下,我将有一个浅灰色背景,所以它不是完全白色的)。

布局+视图

xml 会像这样:

...
<LinearLayout
    android:id="@+id/headerLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/headerImage"
        android:orientation="vertical" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="5dip"
        android:background="@drawable/drop_shadow" >
    </View>
</LinearLayout>
...

drop_shadow.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">    
    <gradient
        android:startColor="#404040"
        android:endColor="#F1F1F1"
        android:angle="270"
        >
    </gradient>
</shape>

我希望它会有所帮助;)

于 2013-01-22T16:49:28.197 回答
7

您可以使用android.support.v4.view.ViewCompat使用静态方法设置视图高度的类setElevation。该类是一个帮助器,用于以向后兼容的方式访问 API 级别 4 之后引入的视图中的功能。

基本高程以像素为单位,例如

View mFab = (View) findViewById(R.id.floating_button);
ViewCompat.setElevation(mFab, 12);
于 2016-05-20T12:41:40.443 回答
6

对于棒棒糖及以上,您可以使用海拔

对于旧版本:

这是一个懒惰的黑客攻击:http: //odedhb.blogspot.com/2013/05/android-layout-shadow-without-9-patch.html

(toast_frame 在 KitKat 上不起作用,从 toast 中删除了阴影)

只需使用:

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

或者:

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

作为背景

例子:

<TextView
        android:layout_width="fill_parent"
        android:text="I am a simple textview with a shadow"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:padding="16dp"
        android:textColor="#fff"
        android:background="@android:drawable/toast_frame"
        />

并具有不同的背景颜色:

<LinearLayout
        android:layout_height="64dp"
        android:layout_width="fill_parent"
        android:gravity="center"
        android:background="@android:drawable/toast_frame"
        android:padding="4dp"
        >
    <Button
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="Button shadow"
            android:background="#33b5e5"
            android:textSize="24sp"
            android:textStyle="bold"
            android:textColor="#fff"
            android:layout_gravity="center|bottom"
            />

</LinearLayout>
于 2013-05-30T13:03:56.317 回答