高程阴影被剪裁

Sea*_*n 21 xml android

我尝试将高程添加到我的自定义按钮,但结果是:

在此输入图像描述

如您所见,阴影被剪裁.我试图在StackOverflow和谷歌搜索,我发现类似的问题,但没有答案:)

XML:

<Button
   android:id="@+id/email_sign_in_button"
   android:layout_width="141dp"
   android:layout_height="45dp"
   android:textAlignment="gravity"
   android:text="@string/action_sign_in"
   android:gravity="center_horizontal"
   android:elevation="4dp" />
Run Code Online (Sandbox Code Playgroud)

这是我的自定义按钮样式.

button.xml:

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

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_enabled="false"
    android:drawable="@drawable/button_disabled" />
<item
    android:state_pressed="true"
    android:state_enabled="true"
    android:drawable="@drawable/button_pressed" />
<item
    android:state_focused="true"
    android:state_enabled="true"
    android:drawable="@drawable/button_regular" />
<item
    android:state_enabled="true"
    android:drawable="@drawable/button_regular" />
</selector>
Run Code Online (Sandbox Code Playgroud)

没有按下的样式.

button_regular.xml:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:angle="-90"
    android:centerX="10"
    android:centerY="10"
    android:endColor="#30bbff"
    android:gradientRadius="10"
    android:startColor="#0081c0"
    android:type="linear"/>
<stroke android:width="5dip" android:color="#ffffff" />
<corners android:radius="20dip"/>
<padding android:left="7dp"
    android:top="7dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

Joo*_*ins 39

你的阴影可能会受到视图边界的限制.尝试在按钮底部添加填充.

如果按钮位于父级的底部,则父ViewGroup也可能会剪切阴影.确保父级具有填充并设置android:clipToPadding="false"父级.

  • @behelit我认为你可以一起使用android:clipChildren ="false"和android:clipToPadding ="false"来解决所有这些问题. (19认同)
  • @androiddeveloper是正确的,我在父级上需要*全部3 *(padding,clipChildren = false,clipToPadding = false)。 (4认同)
  • 如果你可以负担得起填充,这是有效的,但在大多数情况下,额外的填充会看起来很糟糕.标准高程(未应用剪切)可以在其他视图上绘制阴影,必须有一种方法可以在不添加填充的情况下实现相同的结果. (2认同)
  • 确保父级有填充,*不是*边距,否则这将不起作用。 (2认同)

Bur*_*ada 23

添加android:clipChildren="false"android:clipToPadding="false"按钮两个祖先ViewGroup