Android Ver sombra


Busqué alrededor, y no pude encontrar una manera adecuada de hacer esto. Quiero tener los siguientes efectos de sombra en mis vistas: introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

Para ser honesto, no sé si este segundo se hace aplicando efecto de sombra. Alguna idea?

Author: longwalker, 2014-01-19

10 answers

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: Echa un vistazo a esto:

android:background="@drawable/abc_menu_dropdown_panel_holo_light"

Se ve así: {[14]]}

introduzca la descripción de la imagen aquí

Espero que sea útil

Editar

La opción anterior es para las versiones anteriores de Android Studio por lo que es posible que no la encuentre. Para versiones más recientes:

android:background="@android:drawable/dialog_holo_light_frame"

Además, si quieres tener tu propia forma personalizada, sugiera usar un software de dibujo como Photoshop y dibujarlo.

introduzca la descripción de la imagen aquí

No olvide guardarlo como archivo .9.png (ejemplo: my_background.9.png)

Lea la documentación: Sorteo 9-parche

Editar 2

Una solución aún mejor y menos laboriosa es usar un CardView y establecer app:cardPreventCornerOverlap="false" para evitar que las vistas se superpongan en 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 el build.gradle, actual es

compile 'com.android.support:cardview-v7:26.0.0'
 138
Author: Rick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-25 09:55:14

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í:

introduzca la descripción de la imagen aquí

 92
Author: Repo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-09 01:40:11

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>

Luego agregue el siguiente código al elemento al que desea el diseño de la tarjeta

android:background="@drawable/card_background"

La siguiente línea define el color de la sombra para la tarjeta

<solid android:color="#BDBDBD"/>
 30
Author: Vivek Varma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-22 08:30:38

CardView te da true sombra en Android 5+ y tiene una biblioteca de soporte. Solo envuelve tu vista con ella 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.+'
}
 23
Author: Ilya Gazman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-22 19:43:03

Poner 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 de la misma, mientras que todavía se puede poner un fondo a través de layer-list

<?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 del elemento de diseño en say shadow.xml

Para asignarlo a una vista, en el archivo de diseño xml establezca el fondo de la misma

android:background="@drawable/shadow"
 22
Author: Mohamed Selim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-30 15:56:30

Use la propiedad de elevación para lograr un efecto de sombra:

<View ...
    android:elevation="2dp"/>

Esto solo se puede usar después de v21, echa un vistazo a este enlace: http://developer.android.com/training/material/shadows-clipping.html

 14
Author: mossman252,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-19 19:59:47

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 agrega esta línea en tu compilación.dependencia de gradle

compile 'com.h6ah4i.android.materialshadowninepatch:materialshadowninepatch:0.6.3'

Saludos. pulgares para arriba para el creador ! happycodings

 11
Author: ralphgabb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-05 01:35:39

Si necesita que las sombras se apliquen correctamente, debe hacer lo siguiente.

Considere esta vista, definida con un elemento de diseño de fondo:

<TextView
    android:id="@+id/myview"
    ...
    android:elevation="2dp"
    android:background="@drawable/myrect" />

El elemento de diseño de fondo 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 apegarse a las sombras mira esto https://developer.android.com/training/material/shadows-clipping.html#Shadows

 3
Author: Shangeeth Sivan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-15 12:14:24

Utilice la propiedad elevation para el efecto sombra:

<YourView
    ...
    android:elevation="3dp"/>
 1
Author: Ofek Ashery,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-18 07:34:20

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>
 0
Author: Mr.Hosseini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-23 10:08:08