我已经阅读了AppCompat Library中的工具栏及其所有功能。我在Android开发人员博客(here)中注意到的一些事情是:
AppCompat完全支持工具栏,并具有功能和API奇偶校验 使用框架小部件。
他们还提到我们可以更好地控制它的外观和外观。
但是,当我在Android Studio中添加活动时,我得到了这个:
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar_add_contacts"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay">
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
此处工具栏位于AppBar中。 (ActionBar和AppBar是一样的。不是吗?)有什么用处。在一些博客中,我也读到AppBar可以替换为设计支持库的工具栏。
通常,在工具栏后面会显示content_layout。所以我们将在工具栏后面的行下面。
<include layout="@layout/content_myactivity" />
所以,一旦我遇到一个问题,内容在工具栏上面(仅用于工具栏,而不是在appbar中)隐藏整个工具栏,仍然可以点击。因此,我必须将代码中的工具栏移到我的内容下方,以使其显示在我的内容之上。
那么,用什么?工具栏? AppBarLayout? AppBarLayout里面的工具栏?
每个人的用途是什么?
更新:
所以我已经在activity_layout文件中添加了工具栏。然后,为什么需要使用setSupportActionBar(toolbar);
来设置工具栏并添加主题AppTheme.NoActionBar
。这是Android Studio中所有活动的正常行为。
使用
禁用窗口操作栏有什么用?<item name="windowActionBar">false</item>
并使用setSupportActionBar(toolbar)
进行设置?
答案 0 :(得分:5)
AppBarLayout
是一个容器,您可以在其中放置ToolBar
,TabLayout
或其他内容。无论您使用哪种布局用于其余内容,所有这些都将显示在屏幕顶部。如果需要,您可以使用Toolbar
而不是AppBarLayout
,但是您需要将其包含在使用其余内容的ViewGroup
中。并将它放在它的底部,所以它不会被其他东西覆盖。
AppBar
可以帮助您远离它并提供一些其他功能,例如滚动行为。它写成here btw.
另请注意,AppBarLayout
在很大程度上取决于CoordinatorLayout
中的直接子项。如果您在其他AppBarLayout
内使用ViewGroup
,则其大部分功能将无效。
答案 1 :(得分:1)
AppBarLayout是一个垂直LinearLayout
,它实现了材料设计应用栏概念的许多功能,即滚动手势。
儿童应通过setScrollFlags(int)
和相关的布局xml属性提供所需的滚动行为:app:layout_scrollFlags。
此视图在很大程度上取决于在CoordinatorLayout
中用作直接子项。如果您在其他ViewGroup
内使用AppBarLayout,则其大部分功能将无效。
AppBarLayout还需要单独的滚动兄弟,以便知道何时滚动。绑定是通过AppBarLayout.ScrollingViewBehavior
行为类完成的,这意味着您应该将滚动视图的行为设置为AppBarLayout.ScrollingViewBehavior
的实例。包含完整类名的字符串资源可用。
您还可以将以下内容实现为AppBarLayout
<android.support.design.widget.CoordinatorLayout
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="match_parent">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<!-- Your scrolling content -->
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent">
<android.support.v7.widget.Toolbar
...
app:layout_scrollFlags="scroll|enterAlways"/>
<android.support.design.widget.TabLayout
...
app:layout_scrollFlags="scroll|enterAlways"/>
</android.support.design.widget.AppBarLayout>
来源:AppBarLayout