Elevation在LinearLayout上不起作用

寻找解决scheme后,我没有find任何解决我的问题。

我有一些高度,在我的应用程序的大部分产生阴影。
但在特定的地方,我无法做到这一点。
(这是我在下面的图片上放置箭头的地方)

在这里输入图像说明

工具栏下方的白色区域是一个显示LinearLayoutFragment

布局:

 <LinearLayout android:id="@+id/panelAddress" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/button_flat_white" android:elevation="10dp" android:orientation="vertical" android:padding="20dp" > //some content </LinearLayout> 

片段的父母:

 <android.support.v4.widget.DrawerLayout android:id="@+id/drawerLayout" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include android:id="@+id/custom_toolbar" layout="@layout/toolbar"/> <RelativeLayout android:id="@+id/mapLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/map" class="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="match_parent"/> <FrameLayout android:id="@+id/fragment_container_top" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" /> <FrameLayout android:id="@+id/fragment_container_bottom" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true"/> </RelativeLayout> </LinearLayout> </android.support.v4.widget.DrawerLayout> 

你有一个想法,为什么我没有得到我的海拔?

Related of "Elevation在LinearLayout上不起作用"

如此处所述https://stackoverflow.com/a/27518160/2481494有几个要求,以便绘制阴影&#xFF1A;

  • 在父母的观点集团的影子空间 。 正如出血182所提到的那样,填充可以导致阴影被修剪:

    (不要使用填充,framelayout上的填充也会将阴影切掉)

    但是,这可以用父android:clipToPadding="false"来解决。

  • 高架的观点需要有背景才能投下阴影。 没有关于你的@drawable/button_flat_white我不能说这是否是你的情况的问题。

要解决你的问题,你应该像这样修改你的FrameLayout:

 <FrameLayout android:id="@+id/fragment_container_top" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:clipToPadding="false" android:paddingBottom="10dp"/> 

要检查您的@drawable/button_flat_white是否会导致任何问题,请尝试将您的LinearLayout的背景临时更改为简单的颜色:

 <LinearLayout android:id="@+id/panelAddress" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:elevation="10dp" android:orientation="vertical" android:padding="20dp" android:background="#fff"> //some content </LinearLayout> 

只需将CardView作为LinearLayout的父级,就可以实现海拔。

 <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" card_view:cardUseCompatPadding="true" card_view:cardElevation="4dp" card_view:cardCornerRadius="3dp"> <LinearLayout android:id="@+id/panelAddress" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/button_flat_white" android:orientation="vertical" android:padding="20dp"> //some content </LinearLayout> </android.support.v7.widget.CardView> 

这是一个绘图问题。

投影被绘制在实际视图边界之外,所以如果父布局不“给”视图足够的空间,它将被剪裁。

由于片段(线性布局)的父级具有相同的大小,所以阴影被裁剪。 在LinearLayout底部添加一个边距。
如果这样无助于尝试在底部使用一个边距较小的FrameLayout来包装布局(不要使用填充,framelayout上的填充也会切断阴影)

1-2dp应该做的。

我希望它能帮助你,只需在第二个布局中添加“marginTop”。

 <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="90dp" android:orientation="vertical" android:elevation="5dp" /> <LinearLayout android:id="@+id/linearLayout2" android:layout_width="match_parent" android:layout_height="90dp" android:orientation="vertical" android:padding="5dp" android:layout_marginTop="3dp" /> 

我有使用填充权利和填充底部(阴影在底部和右侧的布局)它会为我工作它显示一个阴影,否则可绘制阴影不工作的问题做这样的事情,如果你面临同样的问题。

请在清单文件中启用hardwardAccelerated选项,

 <application ... android:hardwareAccelerated="true">