avb*_*avb 37 android xamarin.android material-design android-toolbar
我将我的Android应用程序更新为新的材质设计,但我还想在工具栏中添加一些阴影或高程.通过图像/ 9补丁似乎有一些(hacky)方法,但我想知道它是否可以通过支持库完成.(就像CardView可以有高程)
根据这一答案的另一个问题,这是通过包装可能Toolbar在AppBarLayout,但这并不为我工作.
我的布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/Toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)
我也尝试过通过XML和代码设置高程,但这也不起作用.
任何帮助,将不胜感激!提前致谢.
更新:
由于我在其他布局中包含了我的工具栏布局,因此下面是我的主要布局之一:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
layout="@layout/Toolbar" />
<fragment
class="OverAllField.XamarinAndroid.Fragments.Planning.PlanningFragment"
android:id="@+id/PlanningFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
Vip*_*sri 64
对于Android 5.0及更高版本:AppBarLayout在布局中自动提供/给出阴影.您还可以通过增加AppBarLayout的高程app:elevation="4dp".
对于Pre-Lollipop:您可以使用以下链接:https://github.com/vipulasri/Toolbar-Elevation-Pre-Lollipop
注意:工具栏也支持使用提升android:elevation="4dp"
新更新:在Appcompat v24.0.0中,您无法使用setElevation()和设置提升到AppBarLayout ,app:elevation因为这些已被弃用.
您现在必须使用stateListAnimator属性来设置高程.
注意:设置持续时间为1ms中StateListAnimator,以避免在立面图延迟.
appbar_always_elevated.xml在动画-V21夹下资源目录.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<objectAnimator android:propertyName="elevation"
android:valueTo="8dp"
android:valueType="floatType"
android:duration="1"/>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
在AppbarLayout中:
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="300dp"
android:fitsSystemWindows="true"
android:stateListAnimator="@animator/appbar_always_elevated"
android:theme="@style/AppTheme.AppBarOverlay">
</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)
尝试在活动布局中使用AppBarLayout.尝试:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include
layout="@layout/Toolbar" />
</android.support.design.widget.AppBarLayout>
<fragment
class="OverAllField.XamarinAndroid.Fragments.Planning.PlanningFragment"
android:id="@+id/PlanningFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
Toolbar.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="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="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55969 次 |
| 最近记录: |