2

我正在遷移Android應用以使用Material Design。爲了驗證我是否做了一切正確的事情,我創建了一個空的活動來測試一些Material Design itens(FAB,凸起的按鈕,視圖,卡片,列表等的高程...)。Android - 海拔不起作用

按鈕顯示爲OK,但視圖上的高程不是。我在網上搜索了一個答案,但沒有找到答案。我不使用填充,透明背景,等等。這裏是我的代碼:

值-V21/styles.xml:

<resources> 

    <style name="AppThemeNoActionBar" parent="AppTheme"> 
     <item name="android:navigationBarColor">@color/colorPrimary</item> 
    </style> 

    <style name="AppTheme" parent="MyMaterialTheme.Base"> 
     <item name="android:windowContentTransitions">true</item> 
     <item name="android:windowAllowEnterTransitionOverlap">true</item> 
     <item name="android:windowAllowReturnTransitionOverlap">true</item> 
     <item name="android:windowSharedElementEnterTransition">@android:transition/move</item> 
     <item name="android:windowSharedElementExitTransition">@android:transition/move</item> 
    </style> 

    <style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="windowNoTitle">true</item> 
     <item name="windowActionBar">false</item> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
    </style> 

    <style name="Button" parent="Base.Widget.AppCompat.Button.Colored"> 
     <item name="android:backgroundTint">@color/colorAccent</item> 
    </style> 

    <color name="colorPrimary">#E88768</color> 
    <color name="colorPrimaryDark">#CC785C</color> 
    <color name="colorAccent">#E88768</color> 
    <color name="textColorPrimary">#000000</color> 
    <color name="windowBackground">#FFFFFF</color> 
    <color name="navigationBarColor">#E88768</color> 
</resources> 

佈局-V21/start_activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="@color/white" 
       xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <HorizontalScrollView 
     android:layout_width="match_parent" 
     android:layout_height="40dp" 
     android:layout_alignParentStart="true" 
     android:elevation="12dp" 
     android:translationZ="12dp" 
     android:id="@+id/scrollView"> 

    </HorizontalScrollView> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:layout_below="@+id/scrollView"> 

    </LinearLayout> 

</RelativeLayout> 

燦任何人都幫助我?

+0

我還沒有弄亂海拔或z軸的翻譯,但是翻譯的高程添加?如果不是,你的翻譯Z和海拔是否會相互抵消。再一次,沒有真正搞砸這個。更多的問題,而不是一個建議:P – zgc7009

回答

6

嘗試背景顏色/繪製設置爲您HorizontalScrollView

android:background="@android:color/white" 

這似乎是必要的要繪製的陰影。

+0

工作!這是一個錯誤? –

+2

我認爲它實際上是一個功能:) 原因是,如果你不指定背景,它是隱含透明的。由海拔屬性創建的陰影適應具有透明度的背景,這意味着陰影尊重例如圓角。因爲如果背景完全透明,則不會生成陰影。 – dthulke

1

如果elevation沒有工作,你可以使用一個小技巧就像把在CardView內容,然後設置:

card_view:cardElevation="2dp" 

或者:

card_view:cardCornerRadius="4dp" 

對於角落。

這是最好的方式,但是你可能會看到elevationsAndroid Studio中的預覽,但實際上,所有的人都沒有,當你的編譯應用程序的工作,或者是在模擬器中運行或一個真實的設備。所以,在這些情況下,最好使用CardView

對於〔實施例:

<android.support.v7.widget.CardView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clickable="true" 
     android:foreground="?android:attr/selectableItemBackground" 
     card_view:cardCornerRadius="4dp" 
     card_view:cardElevation="2dp"> 

     <HorizontalScrollView 
      android:id="@+id/scrollView" 
      android:layout_width="match_parent" 
      android:layout_height="40dp" 
      android:layout_alignParentStart="true" 
      android:translationZ="12dp"> 

     </HorizontalScrollView> 
    </android.support.v7.widget.CardView> 
+0

這項工作,但這是一個解決方法嗎?在Android示例中,他們不會應用「CardView」來創建陰影。 –

+0

是的,例如,您可能希望在preLollipop上使用「Button」並使用像googleplay設計這樣的陰影,但是您無法看到按鈕陰影或其他的東西,那麼我們需要使用'CardView'就像我的答案。只要考慮作爲另一種方式來做到這一點:) – Mohsen