高程阴影被剪裁

时间:2015-12-29 20:19:27

标签: android xml

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

enter image description here

正如您所见,阴影被剪裁了。我试图在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" />

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

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>

未按下时的样式。

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>

3 个答案:

答案 0 :(得分:30)

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

完整答案

将这两行添加到父视图

<块引用>

android:clipChildren="false"

android:clipToPadding="false"

示例:

<androidx.constraintlayout.widget.ConstraintLayout
            android:clipChildren="false"
            android:clipToPadding="false"
           ... >

        <TextView
         style="@style/TextShadowStyle"
          ....
            />

文字阴影样式:

 <style name="TextShadowStyle">
        <item name="android:shadowColor">@color/black</item>
        <item name="android:shadowDx">10</item>
        <item name="android:shadowDy">10</item>
        <item name="android:shadowRadius">5</item>
    </style>