web-dev-qa-db-ja.com

「Android:elevation =」は、コンパイルAPI21を使用したLollipopより前のデバイスでは機能しません

アプリケーションで"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'
}

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"/>

lollipop以前のデバイス用にLollipopを正しくコンパイルしていない可能性があります。

コードの他の部分を見る必要がある場合は、質問を編集します

ありがとう

35
Aspicas

高度を上げるには、デバイスでLollipopを実行する必要があります。標高をシミュレートする方法については、この回答を参照してください https://stackoverflow.com/a/26747592/680249

14
drewi

[〜#〜] updated [〜#〜]::

  1. ベストプラクティス

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

    カードビュー用のライブラリを追加します

    dependencies {
       ...
       compile 'com.Android.support:cardview-v7:21.0.+'
     }
    
  2. Pre-Lollipopでは、これを使用できます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>
    

参照

20
Keyur Lakhani

サポートライブラリのCardViewを使用して、サーフェスを実装することもできます。
そのためには、build.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を背景として使用する場合と比較して、カスタマイズするための非常に多くのオプションがあります

編集:
また、このアプローチで可能単純に実装することに注意してください
Material Design Pre-Lolipopデバイス
標高は変更できますが、
コーナーなど。
そのためには、次のことを行う必要があります。

 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を使用してください。

10
Leo Droidcoder

here で説明したように、次の方法でpre-Lollipopの標高を模倣できます。

 Android:background="@Android:drawable/dialog_holo_light_frame"
0
Amir Rezazadeh