我尝试将高程添加到自定义按钮,但结果是:
正如您所见,阴影被剪裁了。我试图在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>
答案 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>