【发布时间】:2020-02-23 23:32:11
【问题描述】:
我正在开发一个针对 android Lollipop 及更高版本的 Android 应用程序,我查看了海拔属性以在元素(即按钮、卡片和底部导航视图)下实现阴影。
我面临的问题是,在 XML 中更改 android:elevation 值时,阴影大小不受影响。我尝试并阅读的内容:
- 我了解到,除非视图有背景,否则海拔不起作用,而我的背景确实有(发布在下面)。
- 围绕 SO 的其他问题表明它们根本没有阴影,在我的情况下,视图下方确实有阴影,但其大小不受海拔属性的影响。
关于代码,您可以在下面找到我的按钮样式和片段的布局。
按钮样式
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:app="http://schemas.android.com/apk/res-auto">
<style name="Search" parent="@android:style/Widget.Button">
<item name="android:gravity">center_vertical|start</item>
<item name="android:textColor">@color/lightText</item>
<item name="android:textSize">@dimen/main_search_textSize</item>
<item name="android:background">@drawable/main_search</item>
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
<item name="android:text">@string/search</item>
<item name="android:elevation">@dimen/main_search_elevation</item>
<item name="android:drawableStart">@drawable/ic_main_search</item>
<item name="android:paddingLeft">@dimen/main_search_padding</item>
<item name="android:paddingRight">@dimen/main_search_padding</item>
<item name="android:drawablePadding">@dimen/main_search_padding</item>
</style>
</resources>
片段布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingStart="@dimen/activity_horizontal_margin"
android:paddingEnd="@dimen/activity_horizontal_margin"
android:background="@color/lightBackground"
android:clipToPadding="false">
<androidx.appcompat.widget.AppCompatButton
style="@style/Search"
android:layout_width="match_parent"
android:layout_height="@dimen/main_search_height"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
dimens.xml
<resources>
<dimen name="activity_horizontal_margin">24dp</dimen>
<dimen name="activity_vertical_margin">24dp</dimen>
<dimen name="main_nav_icon_padding">6dp</dimen>
<dimen name="main_search_height">54dp</dimen>
<dimen name="main_search_marginTop">72dp</dimen>
<dimen name="main_search_elevation">24dp</dimen>
<dimen name="main_search_padding">16dp</dimen>
<dimen name="main_search_textSize">20sp</dimen>
</resources>
这就是我得到的(不管海拔属性是什么):
请注意,长按按钮时阴影会发生变化,并且不会以任何方式被剪裁。
因此,您知道问题出在哪里吗?
【问题讨论】:
-
你能检查你的清单,如果你的 HardwareAcceleration 是真还是假?
-
改用
cardview -
@FurqanKhan 也没有,它没有设置。将其设置为
true时,我得到了与上面相同的结果。当设置为false时,阴影一起消失了。