CoordinatorLayout의 도구 모음 아래에보기 추가 android:theme=”@style/ThemeOverlay.AppCompat.ActionBar”>

다음과 같은 레이아웃이 있습니다.

<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>

나는 추가 Fragment에들 FrameLayout을 대체. 내 중 하나는 Fragment다음과 같은 레이아웃을 가진 목록입니다.

<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"/>

내 문제는 툴바가 목록 위에 그려져 있다는 것 입니다. 나는의 내용을 포장하여 해당를 해결하기 위해 노력 CoordinatorLayoutLinearLayout오버 드로를 해결,하지만 그런 식으로 행동을 더 이상 작동하지 스크롤 appbar.

어떤 도움이라도 대단히 감사합니다!



답변

속성을 가지고

app:layout_behavior="@string/appbar_scrolling_view_behavior"

아래에서 표시하려고하는 곳에 RecyclerView놓습니다 .FrameLayoutToolbar

스크롤보기 동작이하는 중요한 일 중 하나는 툴바 아래에 구성 요소를 배치하는 것입니다. FrameLayout는 ( RecyclerView) 을 스크롤하는 자손이 있기 CoordinatorLayout때문에을 이동하기위한 스크롤 이벤트를 얻습니다 Toolbar.


그 레이아웃 동작이 발생합니다 :의 또 한가지는 알고 있어야 FrameLayout높이 크기의 수 는 것처럼 Toolbar이미 스크롤 과 함께 Toolbar완벽하게 뷰의 바닥의 바닥 아래에 단순히 너무 아래로 밀려 전체보기를 표시 CoordinatorLayout.

이것은 나에게 놀라운 일이었다. 툴바를 위아래로 스크롤하면 뷰의 크기가 동적으로 조정될 것으로 예상되었습니다. 따라서보기 하단에 고정 구성 요소가있는 스크롤 구성 요소가 있으면를 완전히 스크롤 할 때까지 해당 하위 구성 요소가 표시되지 않습니다 Toolbar.

따라서 UI 하단에 버튼을 고정하고 싶을 때 버튼 하단에 CoordinatorLayout( android:layout_gravity="bottom") 버튼을 놓고 버튼 높이와 동일한 하단 여백을 툴바 아래의 뷰에 추가 하여이 문제를 해결했습니다 .


답변

나는 다음을 추가하여 이것을 고쳤다.

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

다음과 같이 FrameLayout에

 <FrameLayout
        android:id="@+id/content"
        android:layout_marginTop="?android:attr/actionBarSize"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
       />

답변

Android studio 3.4부터는이 줄을 레이아웃에 배치해야합니다 RecyclerView.

app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior"

답변

접는 상단 툴바를 사용하거나 자신이 선택한 ScrollFlags를 사용하여 다음과 같이 할 수 있습니다. Material Design 에서 FrameLayout을 제거하십시오.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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">

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleGravity="top"
            app:layout_scrollFlags="scroll|enterAlways">


        <androidx.appcompat.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin">

            <ImageView
                android:id="@+id/ic_back"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_arrow_back" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="back"
                android:textSize="16sp"
                android:textStyle="bold" />

        </androidx.appcompat.widget.Toolbar>


        </com.google.android.material.appbar.CollapsingToolbarLayout>
    </com.google.android.material.appbar.AppBarLayout>

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/post_details_recycler"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:padding="5dp"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            />

</androidx.coordinatorlayout.widget.CoordinatorLayout>