Sombra de diseño simple en Android
Así que he estado buscando en la web una forma de mostrar una simple sombra para un diseño, pero no hay forma adecuada de hacerlo.
Todo lo que encontré fue una solución alternativa en la que crear un diseño detrás de la que desea una sombra para aplicar, y luego ajustarlo para que sea transparente y otras cosas.
¿Hay alguna otra forma de tener una sombra de diseño simple sin agregar un diseño completamente nuevo?
- Efecto de sombra para un texto en Android?
- Cómo establecer la sombra alrededor de TextView
- ¿Cómo conseguir la sombra en la disposición linear androide?
- CollapsingToolbarLayout sin sombra en estado expandido
- Efecto de sombra en el rectángulo de lienzo
- TextView sombra destruida mientras captura la imagen
- TextView añadiendo gradiente y sombra
- ¿Hay una manera de agregar la sombra interna a un TextView en Android?
- Bloqueo de sombra de botón de acción flotante en los márgenes de vista
- Android: Cajón de navegación sombra vertical
- No se puede establecer la sombra de TextView mediante programación
He sido capaz de encontrar una solución a este problema, y que mediante la adición de una View
debajo de nuestro famoso diseño, mostrando un degradado de un color a otro.
Por lo general, el primer color sería una especie de gris oscuro, y el segundo sería el color del fondo (en mi caso, voy a tener un fondo gris claro por lo que no es completamente blanco).
El xml iría así:
... <LinearLayout android:id="@+id/headerLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:background="@drawable/headerImage" android:orientation="vertical" /> <View android:layout_width="fill_parent" android:layout_height="5dip" android:background="@drawable/drop_shadow" > </View> </LinearLayout> ...
Drop_shadow.xml:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:startColor="#404040" android:endColor="#F1F1F1" android:angle="270" > </gradient> </shape>
Espero que ayude;)
Puede utilizar la clase android.support.v4.view.ViewCompat
que establece la elevación de una vista utilizando el método estático setElevation
. La clase es un ayudante para acceder a las funciones en vista introducidas después del Nivel 4 de la API de una manera compatible con versiones anteriores.
La elevación de la base está en píxeles, por ejemplo
View mFab = (View) findViewById(R.id.floating_button); ViewCompat.setElevation(mFab, 12);
Para lollipop y encima se puede utilizar la elevación .
Para versiones anteriores:
Aquí está un hack perezoso de: http://odedhb.blogspot.com/2013/05/android-layout-shadow-without-9-patch.html
(Toast_frame no funciona en KitKat, la sombra se eliminó de las tostadas)
Solo usa:
android:background="@android:drawable/toast_frame"
o:
android:background="@android:drawable/dialog_frame"
Como fondo
Ejemplos:
<TextView android:layout_width="fill_parent" android:text="I am a simple textview with a shadow" android:layout_height="wrap_content" android:textSize="18sp" android:padding="16dp" android:textColor="#fff" android:background="@android:drawable/toast_frame" />
Y con diverso bg color:
<LinearLayout android:layout_height="64dp" android:layout_width="fill_parent" android:gravity="center" android:background="@android:drawable/toast_frame" android:padding="4dp" > <Button android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="Button shadow" android:background="#33b5e5" android:textSize="24sp" android:textStyle="bold" android:textColor="#fff" android:layout_gravity="center|bottom" /> </LinearLayout>