我有一个视图是服务器作为页脚标题。这只是一个视图,您可以将其视为按钮或文本视图或布局(我对任何事情都很开放)。这是xml
<RelativeLayout>
<ScrollView >… </ScrollView> //match parent width and height
<MyBottomView/> // align parent bottom
</RelativeLayout>
因此,您可以看到ScrollView在MyBottomView下方滚动。我想在MyBottomView中添加一个顶部阴影,使其看起来更像Material Design。我怎么能这样做?
答案 0 :(得分:21)
如果您需要在视图的一侧(例如在顶部)设置阴影,则可以在其前添加另一个视图,并使用渐变阴影作为其背景。
以下是您必须存储在top_shadow_gradient.xml
文件夹中的渐变文件drawable
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#40000000" android:endColor="#30ffffff" android:angle="90"/>
</shape>
以下是如何使用它的示例布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="8dp"
android:background="@drawable/top_shadow_gradient" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:orientation="vertical"
android:paddingTop="8dp">
<!-- Put your content here-->
</LinearLayout>
</LinearLayout>
重要提示:根布局必须透明(android:background="@android:color/transparent"
)和您的内容&#34;布局需要有白色背景(android:background="#ffffff"
)。
答案 1 :(得分:5)
以下是此问题的一些解决方案 - 选择最佳:
在Android中没有这样的属性来显示阴影。但可能的方法是:
添加一个灰色的普通LinearLayout,在其上添加您的实际布局,底部和右侧的边距等于1或2 dp
- 醇>
使用带阴影的9补丁图像并将其设置为线性布局的背景
和
通过实现一个将作为LinearLayoout背景的图层列表,还有另一个问题的解决方案。
将background_with_shadow.xml文件添加到
res/drawable
。含有:<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item > <shape android:shape="rectangle"> <solid android:color="@android:color/darker_gray" /> <corners android:radius="5dp"/> </shape> </item> <item android:right="1dp" android:left="1dp" android:bottom="2dp"> <shape android:shape="rectangle"> <solid android:color="@android:color/white"/> <corners android:radius="5dp"/> </shape> </item> </layer-list>
然后在LINELayout中添加图层列表作为背景。
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/background_with_shadow"/>
您还可以阅读:http://odedhb.blogspot.com/2013/05/android-layout-shadow-without-9-patch.html
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:background="#CC55CC"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="0"> <TableRow> <LinearLayout android:id="@+id/content" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#FFFFFF" android:text="@string/hello" /> </LinearLayout> <View android:layout_width="5dp" android:layout_height="fill_parent" android:layout_marginTop="5dp" android:background="#55000000"/> </TableRow> </TableLayout> <View android:layout_width="fill_parent" android:layout_height="5dp" android:layout_marginLeft="5dp" android:background="#55000000"/> </LinearLayout> </FrameLayout>
我正在使用Android Studio 0.8.6而我找不到:
android:background="@drawable/abc_menu_dropdown_panel_holo_light"
所以我找到了这个:
android:background="@android:drawable/dialog_holo_light_frame"
它看起来像这样:
![在此处输入图片说明] [1]
如果您对清洁材料设计效果感兴趣,请阅读以下文档:
答案 2 :(得分:4)
在黑客攻击中,我发现这是将视图包装在父级中并使用旋转。例如。如果你有一个cardview并且正在为它添加高程,你可以像这样放两个旋转来实现上面而不是下面的阴影:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:paddingBottom="10dp"
android:rotation="180">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:rotation="180"
app:cardElevation="8dp">
<!--Card view content-->
</android.support.v7.widget.CardView>
</RelativeLayout>
这给出了附件截图。
这还有一个问题 - 这需要在父布局上设置paddingBottom,这意味着布局上方的任何可滚动的兄弟都不会低于它。
因此,即使在今天的高程和大纲提供者时代,也可以更好地添加半透明视图。 :(
答案 3 :(得分:0)
仅顶部阴影:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape>
<padding
android:top="@dimen/_2sdp" />
<solid android:color="@color/red" />
<corners android:radius="@dimen/_8sdp" />
</shape>
</item>
<!-- Background -->
<item>
<shape>
<solid android:color="@color/white" />
<corners android:radius="@dimen/_8sdp" />
</shape>
</item>
如果您希望阴影出现在其他区域,请添加内边距 bottom
、right
、left
结果: