2017-06-19 130 views
0

我無法用setElevation繪製陰影。我不想使用圖形來執行此操作。這是代碼:
這是父母。
Page.xml
setElevation不顯示陰影

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="@color/background"> 

    <LinearLayout 
     android:id="@+id/pp_cont_new_list" 
     android:background="@color/background" 
     android:layout_width="match_parent" 
     android:layout_height="150dp" 
     android:gravity="center_horizontal" 
     android:orientation="vertical" 
     android:paddingLeft="30dp" 
     android:paddingRight="30dp" 
     android:paddingTop="5dp"> 
    </LinearLayout> 

</LinearLayout> 

我在這裏建立一個簡單的佈局。
PersonalPage.Java

final LinearLayout ROOT = (LinearLayout) findViewById(R.Id.pp_cont_new_list); 
final LinearLayout LL = new LinearLayout(context); //Container 
LL.setLayoutParams (new LinearLayout.LayoutParams(
    Generic.PARAM_MP, //eq. match_parent 
    (int) context.getResources().getDimension (R.dimen.bt_preview_list_height) 
)); 
LL.setBackgroundResource (R.drawable.background_new_list); 
LL.setElevation (5f); 
LL.setClickable (true); 

ROOT.addView(LL); 
/* 
* other code inner the container 
*/ 

此背景
background_new_list.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <corners android:radius="10dp"/> 
      <solid android:color="@color/background"/> 
     </shape> 
    </item> 
    <item> 
     <ripple android:color="@color/textColorAlpha"/> 
    </item> 
</layer-list> 

我想我的錯誤的解釋。
我也想知道如何使用LOLLIPOP之前的版本。

+0

棒棒糖及以上的解決方案。獲取子視圖以顯示陰影的正確方法是在父級上設置填充,並在該父級上設置「android:clipToPadding =」false「」。這是解釋。 對於wick.ed:https://stackoverflow.com/a/27518160/886148 –

+0

:當你看到填充那裏,但即使我添加你的解決方案不起作用 – Thorny84

+0

你有沒有添加填充到父級佈局?你能告訴我更新的代碼嗎?此外,'顏色/背景' –

回答

1

集擡高只是不列入預棒棒糖

工作,你可以創建一個有陰影的自定義按鈕圖像,並將其設置爲按鈕background..or任何視圖的背景給陰影效果

+0

謝謝,但我的代碼在LOLLIPOP之前和LOLLIPOP之後不工作 – Thorny84

0

使用ViewCompat.setElevation(your_view(in your case LL), elevation_amount); 但對於設備上預棒棒糖這不會有效果, 預棒棒糖情況下,你可以使用:

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

我以前嘗試過,但它不起作用 – Thorny84

0

這是工作,如果你不介意做的事情在XM湖我試過了。我沒有使用背景顏色值,所以我使用了不同的顏色作爲父級佈局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#E8E8E8" 
android:paddingBottom="20dp" 
android:clipToPadding="false" 
android:translationZ="6dp"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="150dp" 
    android:background="@drawable/background_new_list" 
    android:clipToPadding="false" 
    android:elevation="25dp" 
    android:orientation="vertical" 
    /> 

注:我使用的是更高的高程值只是爲了更容易地檢查,如果它的工作。你可以根據你的需要進行調整。