2017-08-08 133 views
0

的影子,我希望像影子一樣,當你得到它:設置佈局

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

有誰知道從這個源代碼嗎? 或者我如何才能做到這一點,我只有我的佈局底部的陰影,而不是在它周圍?

+0

使用此背景提供一些底部填充。它會給你帶來陰影效果 –

+0

[This](https://github.com/android/platform_frameworks_base/blob/master/core/res/res/drawable-mdpi/dialog_full_holo_light.9.png)是你正在尋找的drawable 。 –

回答

0

有兩路:

1)添加shadow.xmlshadow.png繪製並在佈局中使用它

shadow.xml:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item android:bottom="8dp"> 
     <shape android:shape="rectangle" > 
      <size android:height="1dp" /> 

      <solid android:color="#43000000" /> 
     </shape> 
    </item> 
    <item android:top="1dp"> 
     <shape 
      android:dither="true" 
      android:shape="rectangle" > 
      <gradient 
       android:angle="270" 
       android:endColor="#00000000" 
       android:startColor="#10000000" /> 

      <size android:height="8dp" /> 
     </shape> 
    </item> 

</layer-list> 

例如your_layout.xml的:

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     android:background="@drawable/shadow" 
     android:orientation="vertical"> 
     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#FFFFFF" 
      android:layout_marginTop="20dp" 
      android:layout_marginLeft="20dp"/> 
    </LinearLayout> 

2)另一種方式是解決方法

大部分的陰影其實都在視圖的下方,一個微妙的陰影也在上面。解決方法可能會使用非常高的值來提升高度,例如40dp:由於您的佈局,底部部分將隱藏起來,而頂部將被展開並看起來像一個共同的陰影。

無論哪種情況,您都無法控制dp中的高程值,因爲您無法確定您的影子與android:elevation = 4dp投射的影子相同。

+0

這不是一個真正的影子 – David

+0

另一個選項是設置card_view:cardElevation在cardview android – user7439667

1

從下面的鏈接可以使用9 Patch Shadow Generator作爲佈局的背景。

Shadow generator

0

shadow.xml

<?xml version="1.0" encoding="utf-8"?> 

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

<!-- Drop Shadow Stack --> 
<item> 
    <shape> 
     <padding 
      android:bottom="1dp" 
      android:left="1dp" 
      android:right="1dp" 
      android:top="1dp" /> 

     <solid android:color="#00AAAAAA" /> 

     <corners android:radius="3dp" /> 
    </shape> 
</item> 
<item> 
    <shape> 
     <padding 
      android:bottom="1dp" 
      android:left="1dp" 
      android:right="1dp" 
      android:top="1dp" /> 

     <solid android:color="#10AAAAAA" /> 

     <corners android:radius="3dp" /> 
    </shape> 
</item> 
<item> 
    <shape> 
     <padding 
      android:bottom="1dp" 
      android:left="1dp" 
      android:right="1dp" 
      android:top="1dp" /> 

     <solid android:color="#20AAAAAA" /> 

     <corners android:radius="3dp" /> 
    </shape> 
</item> 
<item> 
    <shape> 
     <padding 
      android:bottom="1dp" 
      android:left="1dp" 
      android:right="1dp" 
      android:top="1dp" /> 

     <solid android:color="#30AAAAAA" /> 

     <corners android:radius="3dp" /> 
    </shape> 
</item> 
<item> 
    <shape> 
     <padding 
      android:bottom="1dp" 
      android:left="1dp" 
      android:right="1dp" 
      android:top="1dp" /> 

     <solid android:color="#50AAAAAA" /> 

     <corners android:radius="3dp" /> 
    </shape> 
</item> 

<!-- Background --> 
<item> 
    <shape> 
     <solid android:color="@android:color/white" /> 

     <corners android:radius="3dp" /> 
    </shape> 
</item> 

以此爲這樣整個佈局的背景:

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:background="@drawable/shadow" 
android:layout_marginLeft="10dp" 
android:layout_marginRight="10dp" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<---Describe your whole layout here> 

</LinearLayout>