首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在CoordinatorLayout中的工具栏下方添加视图

在CoordinatorLayout中的工具栏下方添加视图
EN

Stack Overflow用户
提问于 2015-10-06 03:09:43
回答 4查看 110.7K关注 0票数 187

我有以下布局:

代码语言:javascript
复制
<android.support.design.widget.CoordinatorLayout
    android:id="@+id/main_content"
    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.design.widget.AppBarLayout
        android:id="@+id/appBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

    </android.support.design.widget.AppBarLayout>

    <FrameLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</android.support.design.widget.CoordinatorLayout>

我将Fragments添加到FrameLayout中,替换它们。我的Fragment之一是一个列表,它的布局如下:

代码语言:javascript
复制
<android.support.v7.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

我的问题是,工具栏是在列表上绘制的。我试图通过将CoordinatorLayout的内容包装到LinearLayout中来解决这个问题,这解决了透支问题,但那样appbar滚动行为就不再起作用了。

任何帮助都是非常感谢的!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-06 08:15:08

获取该属性

代码语言:javascript
复制
app:layout_behavior="@string/appbar_scrolling_view_behavior"

关闭RecyclerView,并将其放到您试图在Toolbar下显示的FrameLayout上。

我发现滚动视图行为所做的一件重要的事情就是在工具栏下面布局组件。因为FrameLayout有一个将滚动(RecyclerView)的后代,所以CoordinatorLayout将获得那些用于移动Toolbar的滚动事件。

另一件要注意的事情是:布局行为将导致FrameLayout高度的大小调整为好像Toolbar已经滚动过一样,并且在Toolbar完全显示的情况下,整个视图只是向下推,以便视图的底部低于CoordinatorLayout的底部。

这对我来说是个惊喜。我原以为视图会随着工具栏的上下滚动而动态调整大小。因此,如果在视图底部有一个带有固定组件的滚动组件,则在完全滚动Toolbar之前,您将看不到底部组件。

因此,当我想在UI的底部锚定一个按钮时,我通过将按钮放在CoordinatorLayout (android:layout_gravity="bottom")的底部并在工具栏下方的视图中添加一个与按钮高度相等的下边距来解决这个问题。

票数 378
EN

Stack Overflow用户

发布于 2016-09-23 21:26:48

我设法通过添加以下内容来修复此问题:

android:layout_marginTop="?android:attr/actionBarSize“

添加到FrameLayout,如下所示:

代码语言:javascript
复制
 <FrameLayout
        android:id="@+id/content"
        android:layout_marginTop="?android:attr/actionBarSize"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
       />
票数 92
EN

Stack Overflow用户

发布于 2019-06-28 08:39:21

从AndroidStudio3.4开始,你需要把这一行放在你的布局中,用来放置RecyclerView

代码语言:javascript
复制
app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32956071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档