如何在可折叠工具栏布局中将布局放置在工具栏下方?

8
我希望我的应用程序中有一个可折叠的工具栏布局。为此,我已将可折叠的工具栏添加到应用程序栏中。我已经添加了相对布局,并在布局下方添加了一些文本视图。我想要在工具栏下显示这个相对布局,并且它应该被折叠到工具栏之下。
目前,当我添加这个布局时,它会与工具栏合并在一起。看起来像下面这样:

enter image description here

编辑:使用嵌套滚动视图进行编辑。可以滚动到状态栏,应该滚动到工具栏。

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="140dp"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:fitsSystemWindows="true">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        app:titleEnabled="false">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"/>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/toolbar"
                android:fitsSystemWindows="true"
                android:gravity="bottom"
                android:paddingLeft="30dp"
                android:scaleType="centerCrop">


                <TextView
                    android:id="@+id/eventName"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="20dp"
                    android:text="Event Name"
                    android:textColor="#ffffff"
                    android:textSize="14sp"/>

                <TextView
                    android:id="@+id/date"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/eventName"
                    android:layout_marginTop="10dp"
                    android:text="Date"
                    android:textColor="#ffffff"
                    android:textSize="14sp"/>

                <TextView
                    android:id="@+id/time"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/date"
                    android:layout_marginBottom="10dp"
                    android:layout_marginTop="10dp"
                    android:text="Time"
                    android:textColor="#ffffff"
                    android:textSize="14sp"/>

            </RelativeLayout>

        </LinearLayout>

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

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

<android.support.v4.widget.NestedScrollView
    android:id="@+id/scroll"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipToPadding="false"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:context="com.example.siddhi.meavita.Activities.PlanDetailsActivity"
        tools:showIn="@layout/activity_plan_details">


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="PLAN"
            android:layout_centerHorizontal="true"
            android:textAppearance="@android:style/TextAppearance.Large"
            android:id="@+id/textView6"
            android:layout_marginTop="10dp" />

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="false"
            android:layout_alignParentStart="false"
            android:layout_below="@+id/textView6"
            android:layout_marginTop="40dp">

            <Button
                android:layout_width="150dp"
                android:layout_height="40dp"
                style="?android:attr/borderlessButtonStyle"
                android:text="Schedule"
                android:id="@+id/schedule"
                android:layout_gravity="center_horizontal"
                android:background="@drawable/list_background" />

            <Button
                android:layout_width="150dp"
                android:layout_height="40dp"
                style="?android:attr/borderlessButtonStyle"
                android:text="Check List"
                android:id="@+id/button4"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="20dp"
                android:background="@drawable/list_background" />

            <Button
                android:layout_width="150dp"
                android:layout_height="40dp"
                android:text="Vendors"
                style="?android:attr/borderlessButtonStyle"
                android:id="@+id/button5"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="20dp"
                android:background="@drawable/list_background" />

            <Button
                android:layout_width="150dp"
                android:layout_height="40dp"
                android:text="Invitee"
                style="?android:attr/borderlessButtonStyle"
                android:id="@+id/button6"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="20dp"
                android:background="@drawable/list_background" />
        </LinearLayout>


    </RelativeLayout>

</android.support.v4.widget.NestedScrollView>

我该如何将此内容放置在工具栏下方,并滚动到工具栏位置?谢谢。
4个回答

12

将此行添加到您的RelativeLayout中。

app:layout_behavior="@string/appbar_scrolling_view_behavior"

我按照Alexander的回答将它添加到了我的相对布局中。现在它完全折叠到状态栏,但我希望它能折叠到工具栏。@Chandrakant Dvivedi - user6265109
将 app:layout_collapseMode="pin" 添加到工具栏中。 - streamride

5

在RelativeLayout中添加一个margin,使用android:layout_marginTop="?attr/actionBarSize"

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/toolbar"
            android:layout_marginTop="?attr/actionBarSize"
            android:fitsSystemWindows="true"
            android:gravity="bottom"
            android:paddingLeft="30dp"
            android:scaleType="centerCrop">

1
<?xml version="1.0" encoding="utf-8"?>
<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:orientation="vertical">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="140dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:fitsSystemWindows="true">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:titleEnabled="false">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">

                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    app:layout_collapseMode="pin"/>

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/toolbar"
                    android:fitsSystemWindows="true"
                    android:gravity="bottom"
                    android:paddingLeft="30dp"
                    android:scaleType="centerCrop">


                    <TextView
                        android:id="@+id/eventName"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:text="Event Name"
                        android:textColor="#ffffff"
                        android:textSize="14sp"/>

                    <TextView
                        android:id="@+id/date"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/eventName"
                        android:layout_marginTop="10dp"
                        android:text="Date"
                        android:textColor="#ffffff"
                        android:textSize="14sp"/>

                    <TextView
                        android:id="@+id/time"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/date"
                        android:layout_marginBottom="10dp"
                        android:layout_marginTop="10dp"
                        android:text="Time"
                        android:textColor="#ffffff"
                        android:textSize="14sp"/>

                </RelativeLayout>

            </LinearLayout>

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

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

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/scroll"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipToPadding="false"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="adlfjsd adsf adsf dsafasd fsda f af dsaf afl djsaflk sjdafl jsalf jsdalf jsdal fjasdl fjalsd jflas jflsa djfdl"
            android:textSize="100sp"/>


    </android.support.v4.widget.NestedScrollView>

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

我已经更新了我的答案。它应该是这样的。在这种情况下,我建议您使用LinearLayout而不是RelativeLayout - Alexander
好的,我试过了。它出现在工具栏下面,但是当我滚动时,所有内容都会向上滚动到状态栏。我只想让它滚动到工具栏。@Alexander - user6265109
请检查我的修改后的问题,已添加更新的布局。@ Alexander - user6265109
我已经测试过了。它滚动到工具栏 @user6265109。 - Alexander
我通过将topMargin设置为工具栏的高度来实现这一点。android:layout_marginTop="?attr/actionBarSize" - Nidhin Rejoice
显示剩余11条评论

0

始终将AppBarLayout放置在布局之上,这个解决方案已经经过测试。你可以尝试一下。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:customfontdemo="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/tools"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="3">
   <android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppBarOverlay"
    android:id="@+id/appBarLayout">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="#428BCA"
        app:popupTheme="@style/PopupOverlay" >
        <lloyd.sp.com.studentportal.utils.MyTextview
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Latest Attendance"
            android:layout_gravity="left"
            android:id="@+id/toolbar_title"
            customfontdemo:fontName="OpenSans-Semibold.ttf"
            android:textColor="#FFFFFF"
            android:textSize="22sp"
            android:lines="1"
            android:paddingLeft="4dp"
            />

        <ImageView
            android:layout_width="28dp"
            android:layout_height="28dp"
            android:layout_gravity = "right"
            android:paddingRight="10dp"
            android:id="@+id/signout"
            android:onClick="dosignout"
            android:src="@drawable/logout_icon"/>
    </android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>

<LinearLayout
    android:id="@+id/linearLayout"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/appBarLayout">

    <Button

        android:text="Status"
        android:textSize="20sp"
        android:textStyle="bold"
        android:background="@drawable/my_button_bg"
        android:gravity="center"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:textColor="@color/black"
        android:layout_height="wrap_content"
        android:id="@+id/textView10" />

    <Button
        android:text="Date"
        android:background="@drawable/my_button_bg"
        android:textSize="20sp"
        android:textStyle="bold"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:textColor="@color/black"
        android:layout_height="wrap_content"
        android:id="@+id/textView6"
        />

    <Button
        android:text="Subject"
        android:textSize="20sp"
        android:textStyle="bold"
        android:background="@drawable/my_button_bg"
        android:gravity="center"
        android:textColor="@color/black"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:id="@+id/textView9"

        />

</LinearLayout>

<ListView
    android:id="@+id/listViewLatestAttendance"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/linearLayout"
    />

</RelativeLayout>

1
根据材料设计参考文献(https://material.io/develop/android/components/collapsing-toolbar-layout/),不建议这样做。 - AbdulHannan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接