“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 ::
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.+'' }
En Pre-Lollipop puedes usar este dibujo.
android: background = "@ android: drawable / dialog_holo_light_frame"
te dará la apariencia 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>
reference