"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


обновлено ::

  1. Лучшие Практики для этого

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

    и добавить библиотеку для cardview

    dependencies {
       ...
       compile 'com.android.support:cardview-v7:21.0.+'
     }
    
  2. On Pre-Леденец вы можете использовать этот drawable

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

    это даст вам посмотреть высота

  3. вы можете создать свой собственный такой

    <?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 для отдыха (обычное) состояние, и вы будете потрясающе.