"android:elevation ="在使用编译API21的前Lollipop设备上不起作用

Asp*_*cas 35 android android-5.0-lollipop android-elevation

我正在尝试"android: elevation ="在我的应用程序中使用,但一旦我运行它没有出现在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'
}
Run Code Online (Sandbox Code Playgroud)

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"/>
Run Code Online (Sandbox Code Playgroud)

也许我没有为棒棒糖前装置正确编制Lollipop,有什么建议吗?

如果您需要查看代码的其他部分,我将编辑问题

谢谢

Key*_*ani 20

更新 ::

  1. 这样做的最佳实践

    <android.support.v7.widget.CardView>
        <YourLayout>
    </android.support.v7.widget.CardView>
    
    Run Code Online (Sandbox Code Playgroud)

    并为cardview添加库

    dependencies {
       ...
       compile 'com.android.support:cardview-v7:21.0.+'
     }
    
    Run Code Online (Sandbox Code Playgroud)
  2. Pre-Lollipop上你可以使用这个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>
    
    Run Code Online (Sandbox Code Playgroud)

参考


dre*_*ewi 14

提升需要设备运行Lollipop.请参阅此答案,了解如何模拟高程/sf/answers/1872331471/


Leo*_*der 10

您还可以使用支持库中的CardView来实现曲面.
为此,请为build.gradle添加依赖项:

compile 'com.android.support:cardview-v7:23.1.1'
Run Code Online (Sandbox Code Playgroud)

然后只需在布局中使用它:

  <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>
Run Code Online (Sandbox Code Playgroud)

与使用@android:drawable/dialog_holo_light_frame背景相比,您可以在这里自定义它

编辑:
另请注意,此方法允许在Pre-Lolipop设备上简单地实现
Material Design . 您可以更改高程, 圆角等. 为此,您必须:


 app:cardElevation="8dp"
 app:cardCornerRadius="8dp"
 app:contentPadding="5dp">
Run Code Online (Sandbox Code Playgroud)

并且不要忘记添加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));
Run Code Online (Sandbox Code Playgroud)

使用8dp用于拾取并2dp为休息(通常)状态,你会真棒.