我有一个操作栏和标签栏。我用
删除了操作栏下面的阴影<item name="android:windowContentOverlay">@null</item>
虽然,我想在标签栏下添加阴影。我正在使用SlidingTabLayout。我的标签TextView:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabText"
android:layout_width="wrap_content"
android:layout_height="@dimen/actionbar_height"
android:textColor="@color/tab_color"
android:gravity="center"
android:textAllCaps="true"
android:singleLine="true" />
怎么做?
答案 0 :(得分:21)
jmols回答结果与Google应用(例如Play报亭)使用的阴影不同。这是我的方法,它使阴影看起来与Play报亭完全相同:
创建一个名为shadow.xml
的drawable:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="@android:color/transparent"
android:endColor="#33000000"
android:angle="90">
</gradient>
</shape>
然后,将该阴影设置为您的内容布局,例如:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Your views here -->
<View
android:layout_width="match_parent"
android:layout_height="8dp"
android:background="@drawable/shadow" />
</RelativeLayout>
放置在工具栏/操作栏下方,这与Play报亭和Play商店中的实现完全相同。
答案 1 :(得分:3)
目前仅在Api级别21上支持阴影(因为它们是实时渲染的),并且不幸的是,支持库不提供阴影。
因此,你必须使用api级别的自定义drawable来模仿阴影&lt; 21。 最简单的方法是:
将阴影设置为主要内容布局,例如:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Toolbar
android:id="@+id/tb_toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/abc_action_bar_default_height_material"
android:title="@string/toolbar_title"
android:elevation="@dimen/toolbar_elevation"/>
<FrameLayout
android:id="@+id/fl_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/tb_toolbar"
android:foreground="@drawable/bottom_shadow"/>
</RelativeLayout>
注意:唯一值得注意的例外是CardView,这个版本确实在较旧的api级别上投下了自己的影子。
有关详细信息,请查看this post。
答案 2 :(得分:1)
如果您使用的是Android Material Design,要在视图中添加阴影,您需要在布局中指定android:elevation
属性或在代码中调用myView.setElevation()
方法。您可以在android documentation
答案 3 :(得分:0)
只需将海拔高度添加到Tablayout
(0dp-25dp)中即可。阅读材质设计guidelines,以获取有关高程的更多信息。
android:elevation="10dp"
以下示例:
<android.support.v7.widget.Toolbar xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="@color/splashGreenTop"
local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:elevation="10dp" />
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_below="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:elevation="10dp"/>
相同的问题:Link
请注意,如果清单中包含以下行,则阴影将不会显示:
android:hardwareAccelerated="false"
还有另一个链接:Link