Agg*_*Dev 253 android shadow material-design android-elevation
我有一个ListView,每个列表项我希望它在它下面显示一个阴影.我正在使用Android Lollipop的新高程功能在View上设置一个我想要投射阴影的Z,并且我已经使用ActionBar(技术上是Lollipop中的工具栏)有效地做到了这一点.我正在使用Lollipop的高程,但由于某种原因,它没有在列表项下显示阴影.以下是每个列表项的布局设置方式:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
style="@style/block"
android:gravity="center"
android:layout_gravity="center"
android:background="@color/lightgray"
>
<RelativeLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:elevation="30dp"
>
<ImageView
android:id="@+id/documentImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/alphared"
android:layout_alignParentBottom="true" >
<appuccino.simplyscan.Extra.CustomTextView
android:id="@+id/documentName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
app:typeface="light"
android:paddingLeft="16dp"
android:paddingTop="8dp"
android:paddingBottom="4dp"
android:singleLine="true"
android:text="New Document"
android:textSize="27sp"/>
<appuccino.simplyscan.Extra.CustomTextView
android:id="@+id/documentPageCount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
app:typeface="italic"
android:paddingLeft="16dp"
android:layout_marginBottom="16dp"
android:text="1 page"
android:textSize="20sp"/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
但是,这是它如何显示列表项,没有阴影:
我也试过以下无济于事:
Jus*_*ard 359
我一直在玩Lollipop上的阴影,这是我发现的:
ViewGroup由于某种原因,父母的界限似乎会削弱其子女的影子; 和android:elevation是由View边界切断的,而不是通过边缘延伸的边界;android:clipToPadding="false".根据我的了解,这是我给你的建议:
RelativeLayout以使填充等于您在要显示阴影的相对布局上设置的边距;android:clipToPadding="false"相同RelativeLayout;RelativeLayout具有高度设置的边缘移除边距;在一天结束时,您的顶级相对布局应如下所示:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="@style/block"
android:gravity="center"
android:layout_gravity="center"
android:background="@color/lightgray"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:clipToPadding="false"
>
Run Code Online (Sandbox Code Playgroud)
内部相对布局应如下所示:
<RelativeLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:background="[some non-transparent color]"
android:elevation="30dp"
>
Run Code Online (Sandbox Code Playgroud)
Dmi*_*nko 271
如果你有一个没有背景的视图,这一行会对你有帮助
android:outlineProvider="bounds"
Run Code Online (Sandbox Code Playgroud)
默认情况下,阴影由视图的背景决定,因此如果没有背景,也不会有阴影.
Joh*_*ick 92
显然,您不能只在视图上设置高程并让它出现.您还需要指定背景.
添加到我的LinearLayout的以下行最终显示阴影:
android:background="@android:color/white"
android:elevation="10dp"
Run Code Online (Sandbox Code Playgroud)
nad*_*ada 41
您应该注意的另一件事是,如果清单中有这一行,阴影将不会显示:
机器人:硬件加速="假"
我尝试了所有建议的东西,但它只对我有用,当我删除线,我有这条线的原因是因为我的应用程序使用了一些位图图像,他们导致应用程序崩溃.
小智 22
如果你有一个没有背景的视图,这一行会对你有帮助
android:outlineProvider="bounds"
Run Code Online (Sandbox Code Playgroud)
如果你有一个背景视图,这一行将对你有所帮助
android:outlineProvider="paddedBounds"
Run Code Online (Sandbox Code Playgroud)
小智 17
如果要向按钮元素添加高程,则需要添加以下行:
android:stateListAnimator="@null"
Run Code Online (Sandbox Code Playgroud)
请参阅Android 5.0 android:Elev for View,但不是Button?
odi*_*ity 12
呃,花了一个小时试图解决这个问题.在我的情况下,我有一个背景设置,但它被设置为一种颜色.这还不够,您需要将视图的背景设置为drawable.
这不会有阴影:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="165dp"
android:background="@color/ight_grey"
android:elevation="20dp"
android:orientation="vertical"
/>
Run Code Online (Sandbox Code Playgroud)
但这会
<LinearLayout
android:layout_width="match_parent"
android:layout_height="165dp"
android:background="@drawable/selector_grey"
android:elevation="20dp"
android:orientation="vertical"
/>
Run Code Online (Sandbox Code Playgroud)
编辑:还发现如果您使用选择器作为背景,如果您没有角落设置,则阴影将不会显示在预览窗口中,但它将显示在设备上
例如,预览中没有阴影:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/white" />
<stroke
android:width="1dp"
android:color="@color/grey"/>
</shape>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
但这样做:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/white" />
<corners android:radius="1dp" />
<stroke
android:width="1dp"
android:color="@color/grey"/>
</shape>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
除了已接受的答案之外,还有一个原因,如果手机上的蓝光过滤器功能打开,则海拔可能无法按预期工作。
当我的设备中的海拔完全扭曲且难以忍受时,我就遇到了这个问题。但预览中的高度很好。关闭手机上的蓝光过滤器解决了该问题。
所以即使设置后
android:outlineProvider="bounds"
Run Code Online (Sandbox Code Playgroud)
海拔无法正常工作,那么您可以尝试修改手机的颜色设置。
添加背景颜色对我有帮助.
<CalendarView
android:layout_width="match_parent"
android:id="@+id/calendarView"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_height="wrap_content"
android:elevation="5dp"
android:background="@color/windowBackground"
/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
212731 次 |
| 最近记录: |