"android: elevation=" не работает на устройствах pre-Lollipop с компиляцией API21
Я пытаюсь использовать "android: elevation ="
в моем приложении, но после запуска он не появляется в устройстве с android 4.1.2
ш
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'
}
макет.в 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"/>
может быть, я неправильно компилирую Lollipop для устройств pre-lollipop, какие-либо предложения?
Если вам нужно увидеть другие части кода, я отредактирую вопрос
спасибо
3 ответов
Высота требует, чтобы устройство запускало Lollipop. Увидеть этот ответ на как имитировать высоты https://stackoverflow.com/a/26747592/680249
обновлено ::
-
Лучшие Практики для этого
<android.support.v7.widget.CardView> <YourLayout> </android.support.v7.widget.CardView>
и добавить библиотеку для cardview
dependencies { ... compile 'com.android.support:cardview-v7:21.0.+' }
-
On Pre-Леденец вы можете использовать этот drawable
android: background= "@android: drawable / dialog_holo_light_frame"
это даст вам посмотреть высота
-
вы можете создать свой собственный такой
<?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>
вы также можете использовать CardView из библиотеки поддержки
для реализации поверхностей.
Для этого добавьте зависимость в свою сборку.Gradle в:
compile 'com.android.support:cardview-v7:23.1.1'
а затем просто используйте его в своих макетах:
<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>
здесь у вас есть гораздо больше возможностей настроить его по сравнению с
используя @android:drawable/dialog_holo_light_frame
фон
EDIT:
Также обратите внимание, что такой подход позволяет ты просто реализовать
Материальный Дизайн on Pre-Lolipop устройства.
Вы можете изменить высоту,
вокруг углов etc.
Для этого вы должны:
app:cardElevation="8dp"
app:cardCornerRadius="8dp"
app:contentPadding="5dp">
и не забудьте добавить xmlns:app="http://schemas.android.com/apk/res-auto"
к корневому макету.
также вы можете легко изменить высоту в коде:
CardView card = (CardView) findViewById(R.id.yourPreetyCoolCardView);
card.setCardElevation(getResources()
.getDimension(R.dimen.card_picked_up_elevation));
использовать 8dp
для подобрали и 2dp
для отдыха (обычное) состояние, и вы будете потрясающе.