usar tutorial studio implementar example developer descargar como android android-layout android-5.0-lollipop material-design

tutorial - Sombra proyectada sobre LinearLayout utilizando Android: elevación



material design android pdf (3)

Intente esto. No puedo establecer el fondo a través de xml, luego probé la forma programática de resolver eso y trabajo perfectamente. Refiérase a esto si se enfrenta un problema en la sombra de la presentación en diseño lineal.

lprofile.setBackgroundResource(R.drawable.background_with_shadow);

lprofile es mi referencia de diseño lineal y background_with_shadow es xml para aplicar la sombra. Espero que lo haga por su requerimiento ... gracias.

Tengo este LinearLayout que se colocará en la parte inferior de un diseño de actividad. Quiero que este LinearLayout tenga una elevación de 4dp, al igual que la barra de herramientas superior, sin embargo, dado que android:elevation coloca la sombra debajo del componente ui y este componente específico (linearLayout) estará en la parte inferior de la pantalla, I no verá ninguna elevación en absoluto ..

Este es mi código LinearLayout , y una imagen de él con la elevación predeterminada implementada:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="3" android:background="@android:color/transparent" android:orientation="horizontal" android:elevation="4dp" android:layout_alignParentBottom="true"> <ImageButton android:id="@+id/playButton" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:scaleType="center" android:clickable="true" android:background="@drawable/bottom_toolbar_menu_selector" android:src="@drawable/ic_play" style="?android:attr/borderlessButtonStyle" /> <ImageButton android:id="@+id/stopButton" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:scaleType="center" android:clickable="true" android:background="@drawable/bottom_toolbar_menu_selector" android:src="@drawable/ic_stop" style="?android:attr/borderlessButtonStyle" /> <ImageButton android:id="@+id/bookmarkButton" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:scaleType="center" android:clickable="true" android:background="@drawable/bottom_toolbar_menu_selector" android:src="@drawable/ic_bookmark" style="?android:attr/borderlessButtonStyle" /> </LinearLayout>

¿Hay alguna forma, usando la elevation para colocar una sombra en la parte superior del componente ui? ¡Gracias por adelantado!


Teóricamente no puedes hacerlo con android:elevation , en el sentido de que no puedes elegir la dirección en la que se va a proyectar la sombra.

Hay dos soluciones.

1. Drawables

Por ejemplo, podría poner un ImageView justo encima de su diseño y configurar android:src="@drawable/shadow" . Este debe ser un GradientDrawable vertical definido en XML, como se explica here .

2. Solución

Mientras que la mayor parte de la sombra está realmente debajo de la vista, una sombra sutil también está arriba. Una solución podría estar usando un valor muy alto para la elevation , como 40dp : la parte inferior se 40dp debido a su diseño, mientras que la parte superior se expandirá y se verá como una sombra común.

En cualquier caso, no tiene control sobre el valor de elevación en dp , en el sentido de que no puede estar seguro de que su sombra es equivalente a la que emite android:elevation=4dp .


utilizar como como

<LinearLayout android:layout_width="match_parent" android:layout_height="205dp" android:background="@color/white" android:orientation="horizontal"> <RelativeLayout android:layout_width="match_parent" android:layout_height="200dp" android:layout_marginTop="-5dp" android:background="@color/white" android:elevation="3dp" android:paddingTop="5dp"> // CHILD VIEWS </RelativeLayout> </LinearLayout>