programacion - manual de android en pdf
Vista de Android sombra (10)
Busqué alrededor, y no pude encontrar una manera apropiada de hacer esto. Quiero tener los siguientes efectos de sombras en mis vistas:
Para ser sincero, no sé si este segundo se hace aplicando el efecto de sombra. ¿Algunas ideas?
Crea card_background.xml en la carpeta res / drawable con el siguiente código:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#BDBDBD"/>
<corners android:radius="5dp"/>
</shape>
</item>
<item
android:left="0dp"
android:right="0dp"
android:top="0dp"
android:bottom="2dp">
<shape android:shape="rectangle">
<solid android:color="#ffffff"/>
<corners android:radius="5dp"/>
</shape>
</item>
</layer-list>
A continuación, agregue el siguiente código al elemento para el que desea el diseño de la tarjeta
android:background="@drawable/card_background"
la siguiente línea define el color de la sombra de la tarjeta
<solid android:color="#BDBDBD"/>
Esto puede ser tarde, pero para aquellos que todavía están buscando una respuesta para esto, encontré un proyecto en git hub y este es el único que realmente se ajusta a mis necesidades. android-materialshadowninepatch
Simplemente agregue esta línea en su dependencia build.gradle
compile ''com.h6ah4i.android.materialshadowninepatch:materialshadowninepatch:0.6.3''
aclamaciones. ¡aprobado para el creador! happycodings
Estoy usando Android Studio 0.8.6 y no pude encontrar:
android:background="@drawable/abc_menu_dropdown_panel_holo_light"
así que encontré esto en su lugar:
android:background="@android:drawable/dialog_holo_light_frame"
y se ve así:
Si necesita que las sombras se apliquen correctamente, debe hacer lo siguiente.
Considere esta vista, definida con un fondo dibujable:
<TextView
android:id="@+id/myview"
...
android:elevation="2dp"
android:background="@drawable/myrect" />
El fondo dibujable se define como un rectángulo con esquinas redondeadas:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#42000000" />
<corners android:radius="5dp" />
</shape>
Esta es la forma recomendada de aplicar sombras. Mira esto https://developer.android.com/training/material/shadows-clipping.html#Shadows
Usa la propiedad de elevación para lograr un efecto de sombra:
<View ...
android:elevation="2dp"/>
Esto solo debe usarse pasado v21, consulte este enlace: http://developer.android.com/training/material/shadows-clipping.html
Use la propiedad de elevación para el efecto sombra:
<YourView
...
android:elevation="3dp"/>
poniendo un fondo de @android:drawable/dialog_holo_light_frame
, da sombra pero no se puede cambiar el color de fondo ni el estilo de borde, por lo que es mejor beneficiarse de la sombra del mismo, mientras se puede poner un fondo a través de la lista de capas
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--the shadow comes from here-->
<item
android:bottom="0dp"
android:drawable="@android:drawable/dialog_holo_light_frame"
android:left="0dp"
android:right="0dp"
android:top="0dp">
</item>
<item
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp">
<!--whatever you want in the background, here i preferred solid white -->
<shape android:shape="rectangle">
<solid android:color="@android:color/white" />
</shape>
</item>
</layer-list>
guárdelo en la carpeta shadow.xml
bajo say shadow.xml
para asignarlo a una vista, en el archivo de diseño xml establece el fondo de la misma
android:background="@drawable/shadow"
usa esta forma como fondo:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:drawable/dialog_holo_light_frame"/>
<item>
<shape android:shape="rectangle">
<corners android:radius="1dp" />
<solid android:color="@color/gray_200" />
</shape>
</item>
</layer-list>
CardView te ofrece una verdadera sombra en Android 5+ y tiene una biblioteca de soporte. Simplemente envuelva su vista con eso y listo.
<android.support.v7.widget.CardView>
<MyLayout>
</android.support.v7.widget.CardView>
Requiere la siguiente dependencia.
dependencies {
...
compile ''com.android.support:cardview-v7:21.0.+''
}
Sé que esta pregunta ya ha sido respondida, pero quiero que sepas que encontré un drawable
en Android Studio
que es muy similar a las fotos que tienes en la pregunta: mira esto:
android:background="@drawable/abc_menu_dropdown_panel_holo_light"
Se parece a esto:
Espero que sea de ayuda
Editar
La opción anterior es para las versiones anteriores de Android Studio
por lo que es posible que no pueda encontrarla. Para versiones más nuevas:
android:background="@android:drawable/dialog_holo_light_frame"
Además, si desea tener su propia forma personalizada, le sugiero usar un software de dibujo como Photoshop
y dibujarlo.
No olvides guardarlo como .9.png
archivo .9.png
(ejemplo: my_background.9.png
)
Lea la documentación: Dibuje el parche 9
Editar 2
Una solución de trabajo aún mejor y menos dura es usar CardView
y configurar la app:cardPreventCornerOverlap="false"
para evitar que las vistas se superpongan a los bordes:
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="2dp"
app:cardElevation="2dp"
app:cardPreventCornerOverlap="false"
app:contentPadding="0dp">
<!-- your layout stuff here -->
</android.support.v7.widget.CardView>
También asegúrese de haber incluido la última versión en build.gradle
, current is
compile ''com.android.support:cardview-v7:26.0.0''