"Android: elevation =" no funciona en los dispositivos pre-Lollipop con compilar API21
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
- Elevación + error de transparencia en Android Lollipop
- Android: la elevación no funciona en L Vista previa
- ¿Qué está haciendo la elevación en Android L?
- ¿Cómo tener un FAB con opción de no padding, pero aún así tener elevación?
- Aplicación de la sombra con la elevación de Android
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 los dispositivos pre-lollipop, ¿Alguna sugerencia?
Si necesitas ver otras partes del código, editaré la pregunta
Gracias
- Android "elevación" que no muestra una sombra
- Material TabLayout elevación no funciona
- La propiedad de elevación no funciona android
- Android appbarlayout elevation aparece en la barra de estado
- Utilizar Elevación y ondulación en ImageButton
- ¿Cómo puedo emular la elevación del botón (sombra) en la API de Android inferior a 21?
Elevación requiere que el dispositivo ejecute Lollipop. Vea esta respuesta sobre cómo simular la elevación https://stackoverflow.com/a/26747592/680249
ACTUALIZADO ::
-
La mejor práctica para hacer eso es
<android.support.v7.widget.CardView> <YourLayout> </android.support.v7.widget.CardView>
Y agregue la biblioteca para cardview
dependencies { ... compile 'com.android.support:cardview-v7:21.0.+' }
-
En Pre-Lollipop puedes usar este
Android: background = "@ android: dibujable / dialog_holo_light_frame"
Le dará el aspecto de elevación
-
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>
referencia
También puede utilizar un CardView de la biblioteca de soporte para implementar superficies.
Para ello, añada una dependencia a su build.gradle:
compile 'com.android.support:cardview-v7:23.1.1'
Y luego simplemente usarlo 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 más opciones para personalizarlo comparándolo con el uso de @android:drawable/dialog_holo_light_frame
como fondo
EDITAR:
También observe, que este enfoque le permite simplemente implementar
Diseño de materiales en dispositivos pre-Lolipop .
Puede cambiar la elevación,
Alrededor de las esquinas, etc.
Para hacerlo, tiene que:
app:cardElevation="8dp" app:cardCornerRadius="8dp" app:contentPadding="5dp">
Y no se olvide de agregar xmlns:app="http://schemas.android.com/apk/res-auto"
al diseño raíz.
También puede cambiar fácilmente la elevación en su código:
CardView card = (CardView) findViewById(R.id.yourPreetyCoolCardView); card.setCardElevation(getResources() .getDimension(R.dimen.card_picked_up_elevation));
Utilice 8dp
para recogido y 2dp
para descansar (usual) estado y usted será impresionante.