Me gustaría crear el mismo borde de este LinearLayout como el ejemplo:
En este ejemplo, podemos ver que el borde no es el mismo en todo el diseño lineal. ¿Cómo puedo crear esto usando un archivo dibujable XML?
Por ahora, solo he podido crear un borde simple alrededor de LinearLayout como este:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners
android:radius="1dp"
android:topRightRadius="0dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" />
<stroke
android:width="1dp"
android:color="#E3E3E1" />
<solid android:color="@color/blanc" />
</shape>
android
border
android-linearlayout
wawanopoulos
fuente
fuente
background
propiedad para eso ... cree un archivo XML con forma de rectángulo, color y efecto de sombra yRespuestas:
Prueba esto..
fuente
"0dp"
con"1dp"
en la respuesta de Hariharan.<gradient>
en su<shape>
para mejorar el efecto de borde, y también si realmente es el efecto que necesita su interfaz de usuario en lugar de solo un borde de color sólido.Por eso existe CardView. CardView | Desarrolladores de Android
Es solo un FrameLayout que admite la elevación en dispositivos pre-piruletas.
Para usar esto, necesita agregar dependencia a
build.gradle
:fuente
Obtengo los mejores resultados usando un gráfico de 9 parches.
Simplemente puede crear un gráfico individual de 9 parches utilizando el siguiente editor: http://inloop.github.io/shadow4android/
Ejemplo:
El gráfico de 9 parches:
El resultado:
La fuente:
fuente
Está bien, sé que esto es demasiado tarde. Pero tenía el mismo requisito. resolví así
1. Primero cree un archivo xml (ejemplo: border_shadow.xml) en la carpeta "dibujable" y copie el código a continuación.
2.ahora en el diseño donde desea la sombra (ejemplo: LinearLayout) agregue esto en android: fondo
Y eso funcionó para mí.
fuente
Esto es muy simple:
Cree un archivo dibujable con un degradado como este:
para sombra debajo de una vista
below_shadow.xml
para sombra sobre una vista
above_shadow.xml
y así sucesivamente para la sombra derecha e izquierda solo cambia el ángulo del gradiente :)
fuente
Como alternativa, puede usar una imagen de 9 parches como fondo para su diseño, permitiendo sombras más "naturales":
Resultado:
Pon la imagen en tu
/res/drawable
carpeta.Asegúrese de que la extensión del archivo sea
.9.png
, no.png
Por cierto, esta es una modificación (reducida al tamaño cuadrado mínimo) de un recurso existente que se encuentra en la carpeta de recursos API 19 SDK.
Dejé los marcadores rojos, ya que no parecen ser dañinos, como se muestra en la herramienta draw9patch.
[EDITAR]
Alrededor de 9 parches, en caso de que nunca haya tenido nada que ver con ellos.
Simplemente agréguelo como fondo de su Vista.
Las áreas marcadas en negro (izquierda y arriba) se estirarán (verticalmente, horizontalmente).
Las áreas marcadas en negro (derecha, abajo) definen el "área de contenido" (donde es posible agregar texto o Vistas; si lo desea, puede llamar a las regiones sin marcar "relleno").
Tutorial: http://radleymarx.com/blog/simple-guide-to-9-patch/
fuente
Crea un archivo .xml en dibujable con el nombre drop_shadow.xml:
Luego:
fuente
Use esta línea única y esperemos que logre el mejor resultado;
uso:
android:elevation="3dp"
ajusta el tamaño todo lo que necesites y esta es la mejor y más simple forma de lograr la sombra como botones y otras sombras predeterminadas de Android. ¡Avísame si funcionó!fuente
Si ya tiene el borde de la forma, simplemente agregue elevación:
fuente
1. Primero cree un nombre de archivo xml shadow.xml en la carpeta "dibujable" y copie el código siguiente.
Luego agregue la lista de capas como fondo en su LinearLayout.
fuente
fuente
Sé que es tarde, pero podría ayudar a alguien.
Puede usar un restrictintLayout y agregar la siguiente propiedad en el xml,
fuente
Encontré la mejor manera de abordar esto.
Debe establecer un fondo rectángulo sólido en el diseño.
Usa este código -
ViewCompat.setElevation(view , value)
En el conjunto de diseño primario
android:clipToPadding="false"
fuente
ViewCompat.setElevation()
método en la clase ViewCompat:public void setElevation(View view, float elevation) {}
. Como puede ver, no está implementado. Realmente dudo que sea de alguna ayuda, y realmente me pregunto si realmente