2017-08-08 167 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>