android android-5.0-lollipop android-elevation

“Android: elevation=” no funciona en dispositivos pre-Lollipop con compilación API21



android-5.0-lollipop android-elevation (3)

La elevación requiere que el dispositivo ejecute Lollipop. Vea esta respuesta sobre cómo simular la elevación https://stackoverflow.com/a/26747592/680249

Estoy tratando de usar "android: elevation =" en mi aplicación, pero una vez que lo ejecuto no aparece en el dispositivo con Android 4.1.2

gradle

apply plugin: ''com.android.application'' android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.example.alvaro.proyectocaronte" minSdkVersion 14 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' } } } dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) compile ''com.android.support:appcompat-v7:21.0.3'' }

layout.xml

<RelativeLayout android:layout_width="1100dp" android:layout_height="fill_parent" android:background="@drawable/rounded_corner" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_marginRight="93dp" android:layout_marginEnd="93dp" android:elevation="3dp"/>

tal vez no estoy compilando correctamente Lollipop para dispositivos pre-lollipop, ¿Alguna sugerencia?

Si necesita ver otras partes del código, editaré la pregunta

Gracias


También puede usar un CardView de la biblioteca de soporte para implementar superficies.
Para hacerlo, agrega una dependencia a tu build.gradle:

compile ''com.android.support:cardview-v7:23.1.1''

Y luego simplemente úselo en sus diseños:

<android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="150dp" android:layout_margin="16dp" android:background="#fff" > </android.support.v7.widget.CardView>

Aquí tienes @android:drawable/dialog_holo_light_frame más opciones para personalizarlo en comparación con el uso de @android:drawable/dialog_holo_light_frame como fondo

EDITAR:
Tenga en cuenta también que este enfoque le permite implementar simplemente
Diseño de materiales en dispositivos Pre-Lolipop .
Puedes cambiar la elevación,
redondear las esquinas etc.
Para ello tienes que:

app:cardElevation="8dp" app:cardCornerRadius="8dp" app:contentPadding="5dp">

Y no olvide agregar xmlns:app="http://schemas.android.com/apk/res-auto" al diseño raíz.

También puedes cambiar fácilmente la elevación en tu código:

CardView card = (CardView) findViewById(R.id.yourPreetyCoolCardView); card.setCardElevation(getResources() .getDimension(R.dimen.card_picked_up_elevation));

Use 8dp para recoger y 2dp para el 2dp de reposo (habitual) y será increíble.


ACTUALIZADO ::

  1. La mejor práctica para hacer eso es

    <android.support.v7.widget.CardView> <YourLayout> </android.support.v7.widget.CardView>

    y añadir biblioteca para cardview

    dependencies { ... compile ''com.android.support:cardview-v7:21.0.+'' }

  2. En Pre-Lollipop puedes usar este dibujo.

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

    te dará la apariencia de elevación

  3. Puedes crear tu propio como este

    <?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>

reference