安卓按钮高度阴影无法正常工作

6
我将翻译如下:

我试图创建一个带有阴影的按钮,使用高程(elevation)和背景图片作为我的“用Gmail登录”的png文件。该按钮包含在相对布局中。无论我尝试什么方法,高程都不会显示出来。我尝试了其他论坛问题中的解决方案,但没有一种可行。

以下是该按钮的代码

<Button
    android:id="@+id/google"
    android:layout_width="270dp"
    android:layout_height="38dp"
    android:layout_marginTop="30dp"
    android:layout_centerHorizontal="true"
    android:background="@drawable/google"
    android:elevation="10dp"
    android:layout_below="@id/slogan"/>

谷歌的可绘制图像是我从Adobe XD导出的png图像。 请问有人能指点一下我哪里做错了吗?谢谢。
此外,我意识到如果我将按钮的背景设置为android:color/white,阴影会出现。所以我认为问题在于png可绘制图像?阴影是否不适用于png图像?是否有解决方法?

2
https://dev59.com/2F4d5IYBdhLWcg3wLf_P - IntelliJ Amiya
2
@IntelliJAmiya,就像我说的一样,我已经查看了论坛。将stateListAnimator设置为null并将clipToPadding设置为false仍然无法使阴影出现。我做错了什么吗? - Jeffrey Chou
@Jeffrey Chou 背景也包括高程视图。这就是为什么。 - Nitin Patel
除了将每个按钮放入CardView中,我应该如何解决这个问题? @NitinPatel - Jeffrey Chou
2
使用android:outlineProvider="bounds" - K.Sopheak
显示剩余7条评论
5个回答

10

使用以下代码在按钮中显示阴影

android:outlineProvider="bounds" – K. Sopheak

好的,有效了!


4
对我来说,这个导致了奇怪的背景行为,但 android:outlineProvider="paddedBounds" 是关键。 - Shyri
1
只对我有效的是:抬升,平移Z,outlineProvider=bounds,stateListAnimator=@null。 - Ultimo_m

3
对于材料按钮,我尝试了以下操作并成功了。
android:translationZ="5dp"

1

尝试这个,希望它能帮到你,因为在你的按钮后面还有另一个视图或布局,会隐藏阴影。

android:layout_marginBottom="16dp"

当我将背景设置为android:color/white时,阴影出现了,因此我不认为是由于其他视图遮挡造成的。 - Jeffrey Chou

0

由于您正在使用图像,将<Button>标签替换为<ImageButton>标签。因此,您的解决方法代码如下:

<ImageButton
        android:id="@+id/google"
        android:layout_width="270dp"
        android:layout_height="38dp"
        android:layout_marginTop="30dp"
        android:layout_centerHorizontal="true"
        android:src="@drawable/google"
        android:elevation="10dp"
        android:layout_below="@id/slogan"/>

请注意,这里使用的是android:src属性而不是android:background属性。
这个对我有用!

-1

试一下这个,希望能帮到你 ||

android:layout_margin="5dp"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接