MrB*_*ide 157 android material-design android-5.0-lollipop android-toolbar
我正在使用支持库v21中的新工具栏更新我的应用程序.我的问题是,如果我没有设置"高程"属性,工具栏不会投射任何阴影.这是正常行为还是我做错了什么?
我的代码是:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/my_awesome_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:elevation="4dp"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<FrameLayout
android:id="@+id/FrameLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent">
.
.
.
Run Code Online (Sandbox Code Playgroud)
在我的Activity - OnCreate方法中:
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)
I'm*_*gon 246
我最终为工具栏设置了自己的投影,认为它可能对寻找它的人有帮助:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:orientation="vertical">
<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/color_alizarin"
android:titleTextAppearance="@color/White"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
<FrameLayout android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- **** Place Your Content Here **** -->
<View android:layout_width="match_parent"
android:layout_height="5dp"
android:background="@drawable/toolbar_dropshadow"/>
</FrameLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
@绘制/ toolbar_dropshadow:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="@android:color/transparent"
android:endColor="#88333333"
android:angle="90"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
@色/ color_alizarin
<color name="color_alizarin">#e74c3c</color>
Run Code Online (Sandbox Code Playgroud)

Bin*_*abu 200
谷歌几周前发布了设计支持库,这个库中有一个很好的解决方案.
将Design Support库添加为依赖项build.gradle:
compile 'com.android.support:design:22.2.0'
Run Code Online (Sandbox Code Playgroud)
AppBarLayout由库提供的添加作为Toolbar布局周围的包装,以生成投影.
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
.../>
</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)
结果如下:

设计支持库还有很多其他技巧.
Muh*_*Ali 25
您不能在API 21(Android Lollipop)之前使用elevation属性.但是,您可以通过编程方式添加阴影,例如使用放置在工具栏下方的自定义视图.
@布局/工具栏
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/blue"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
<View
android:id="@+id/toolbar_shadow"
android:layout_width="match_parent"
android:layout_height="3dp"
android:background="@drawable/toolbar_dropshadow" />
Run Code Online (Sandbox Code Playgroud)
@绘制/ toolbar_dropshadow
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:startColor="@android:color/transparent"
android:endColor="#88333333"
android:angle="90"/> </shape>
Run Code Online (Sandbox Code Playgroud)
在您的活动布局中
<include layout="@layout/toolbar" />

rad*_*ley 17
使用/ values文件夹根据操作系统版本应用正确的阴影样式.
对于小于5.0的设备,使用/values/styles.xml添加windowContentOverlay到您的活动的主体:
<style name="MyViewArea">
<item name="android:foreground">?android:windowContentOverlay</item>
</style>
<style name="MyToolbar">
<item name="android:background">?attr/colorPrimary</item>
</style>
Run Code Online (Sandbox Code Playgroud)
然后通过更改主题添加自己的自定义阴影,包括:
<item name="android:windowContentOverlay">@drawable/bottom_shadow</item>
Run Code Online (Sandbox Code Playgroud)
您可以在此处获取Google的IO应用资源资源:https://github.com/google/iosched/blob/master/android/src/main/res/drawable-xxhdpi/bottom_shadow.9.png
对于5.0及更高版本的设备,请使用/values-v21/styles.xml使用自定义标题样式向工具栏添加高程:
<style name="MyViewArea">
</style>
<style name="MyToolbar">
<item name="android:background">?attr/colorPrimary</item>
<item name="android:elevation">4dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
请注意,在第二种情况下,我不得不创建一个空的MyViewArea风格所以windowContentOverlay就不会出现了.
[更新:更改了资源名称并添加了Google阴影.]
Isl*_*san 16
这对我非常有用:
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primary"
card_view:cardElevation="4dp"
card_view:cardCornerRadius="0dp">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primary"
android:minHeight="?attr/actionBarSize" />
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)
Rob*_* B. 12
如果您正在设置ToolBaras ActionBar然后只需致电:
getSupportActionBar().setElevation(YOUR_ELEVATION);
Run Code Online (Sandbox Code Playgroud)
注意:必须在之后调用 setSupportActionBar(toolbar);
几个小时玩弄这个,这对我有用.
删除所有elevation从属性appBarLayout和Toolbar部件(包括styles.xml如果你申请的任何造型).
现在在里面的活动中,应用elvation你的actionBar:
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setElevation(3.0f);
Run Code Online (Sandbox Code Playgroud)
这应该工作.
小智 6
我加了
<android.support.v7.widget.Toolbar
...
android:translationZ="5dp"/>
Run Code Online (Sandbox Code Playgroud)
在工具栏说明中,它对我有用。使用5.0+
您所需要的只是一个android:margin_bottom等于该android:elevation值的值。不AppBarLayout,clipToPadding等需要。
例子:
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_marginBottom="4dp"
android:background="@android:color/white"
android:elevation="4dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--Inner layout goes here-->
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.appcompat.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
117393 次 |
| 最近记录: |