2014-12-19 73 views
1

我想要在示例應用程序的按鈕上獲得4dp海拔高度,我似乎無法獲得任何陰影顯示。海拔不能正常工作

這是我的代碼:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      tools:context=".MainActivity" 
      android:clipChildren="false" 
      android:orientation="vertical"> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Click me" 
     android:background="@drawable/myrect" 
     android:elevation="4dp"/> 
</LinearLayout> 

隨着我的背景繪製的存在:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="#336699" /> 
    <corners android:radius="5dp" /> 
</shape> 

我app.gradle是:

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.1" 
    ... 
} 

這是結果:

No drop shadow

我沒有看到其他文章,像這樣的問題:Elevation on Android Lollipop not working。他們都指向半透明的背景作爲問題,但正如你在這裏看到的,我使用了完全不透明的背景。

任何想法我失蹤?

+0

不是真的複製,但有相同的答案http://stackoverflow.com/questions/26473244/ android-api-21-changes-my-custom-button-background,它是「set a stateListAnimator」。 – alanv

回答

0

爲Android 5.0版以上&嘗試其他視圖高程..

android:elevation="10dp" 

對於按鈕,

android:stateListAnimator="@anim/button_state_list_animator" 

button_state_list_animator.xml

<?xml version="1.0" encoding="utf-8"?> 
 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
 
<item android:state_pressed="true" android:state_enabled="true"> 
 
<set> 
 
<objectAnimator android:propertyName="translationZ" 
 
android:duration="@integer/button_pressed_animation_duration" 
 
android:valueTo="@dimen/button_pressed_z_material" 
 
android:valueType="floatType"/> 
 
<objectAnimator android:propertyName="elevation" 
 
android:duration="0" 
 
android:valueTo="@dimen/button_elevation_material" 
 
android:valueType="floatType"/> 
 
</set> 
 
</item> 
 
<!-- base state --> 
 
<item android:state_enabled="true"> 
 
<set> 
 
<objectAnimator android:propertyName="translationZ" 
 
android:duration="@integer/button_pressed_animation_duration" 
 
android:valueTo="0" 
 
android:startDelay="@integer/button_pressed_animation_delay" 
 
android:valueType="floatType"/> 
 
<objectAnimator android:propertyName="elevation" 
 
android:duration="0" 
 
android:valueTo="@dimen/button_elevation_material" 
 
android:valueType="floatType" /> 
 
</set> 
 
</item> 
 
<item> 
 
<set> 
 
<objectAnimator android:propertyName="translationZ" 
 
android:duration="0" 
 
android:valueTo="0" 
 
android:valueType="floatType"/> 
 
<objectAnimator android:propertyName="elevation" 
 
android:duration="0" 
 
android:valueTo="0" 
 
android:valueType="floatType"/> 
 
</set> 
 
</item> 
 
</selector>

低於5.0的版本,

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

我的輸出:

enter image description here