尽管互联网上或多或少有一些Toolbar
关于扩展如何工作以及如何向其添加不同View
s 的信息,但我想为我和其他想要实现扩展的人提供分步指南扩展 Toolbar
到他们的应用程序(具体来说,如何向 s 添加视图,Toolbar
我应该使用什么度量来测量不同View
sToolbar
和
如果可能的话,我还想实现浮动操作按钮和一些材料设计动画,因为我在 Android 中看不到任何类或内置方法。
尽管互联网上或多或少有一些Toolbar
关于扩展如何工作以及如何向其添加不同View
s 的信息,但我想为我和其他想要实现扩展的人提供分步指南扩展 Toolbar
到他们的应用程序(具体来说,如何向 s 添加视图,Toolbar
我应该使用什么度量来测量不同View
sToolbar
和
如果可能的话,我还想实现浮动操作按钮和一些材料设计动画,因为我在 Android 中看不到任何类或内置方法。
在 Google I/O 2015 之后,您可以使用Design Support Library来实现 Floating Action Button (FAB) 等 Material Design 视图。Toolbar
仍将使用 v7 支持库创建,如下所示。
Toolbar
:查看来自 Google 的这些规范和指南,我设法Toolbar
使用正确的规范和测量设置了我想要的扩展方式。
在我的例子中,我使用Fragment
s 来更改主要内容(其中Views
扩展的内部Toolbar
也会不同),所以我有一个用于活动的布局文件,以及用于其他片段的不同布局文件。我的主要活动的布局是:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include android:id="@+id/main_toolbar" layout="@layout/toolbar" />
<FrameLayout
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/main_toolbar" />
</RelativeLayout>
@layout/toolbar
简称为以下布局(我用于标准工具栏的布局(即正常高度,就像一个ActionBar
)):
<?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_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
并且FrameLayout
(在主要活动的布局中)中的内容将在 Java 中更改。我的一个片段需要两个Spinner
s,我想将它们嵌入到扩展的Toolbar
. Toolbar
可以方便地用作,因此我为我的片段之一ViewGroup
创建并使用了以下布局:
<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" >
<android.support.v7.widget.Toolbar
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/extended_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:contentInsetStart="72dp"
app:contentInsetEnd="16dp"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" >
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom|center_horizontal"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" >
<include layout="@layout/toolbar_space_margin" />
<Spinner
android:id="@+id/spinner_one"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Spinner
android:id="@+id/spinner_two
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"/>
<include layout="@layout/toolbar_space_margin" />
</LinearLayout>
</android.support.v7.widget.Toolbar>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/extended_toolbar" >
<!-- The main content of that activity layout -->
</ScrollView>
</RelativeLayout>
指的是我在 中定义?attr/colorPrimary
的原色 ( ) 。我认为这两个属性就像. 这意味着将来自 的左边缘,也将来自它的右边缘。另外,我引用了两次,这基本上是我用于顶部和底部边距的空视图:colorPrimary
styles.xml
contentInsetStart
contentInsetEnd
Toolbar
LinearLayout
72dp
Toolbar
16dp
@layout/toolbar_space_margin
<?xml version="1.0" encoding="utf-8"?>
<Space
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="16dp" />
至于使用浮动操作按钮,我找到了各种教程和关于此的Stack Overflow 帖子,所以我使用了这些。我应该更好地研究问题的那部分......
我希望其他遇到这个设计问题的人会发现这个答案很有用。