다음과 같은 레이아웃이 있습니다.
<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"/>
내 문제는 툴바가 목록 위에 그려져 있다는 것 입니다. 나는의 내용을 포장하여 해당를 해결하기 위해 노력 CoordinatorLayout
에 LinearLayout
오버 드로를 해결,하지만 그런 식으로 행동을 더 이상 작동하지 스크롤 appbar.
어떤 도움이라도 대단히 감사합니다!
답변
속성을 가지고
app:layout_behavior="@string/appbar_scrolling_view_behavior"
아래에서 표시하려고하는 곳에 RecyclerView
놓습니다 .FrameLayout
Toolbar
스크롤보기 동작이하는 중요한 일 중 하나는 툴바 아래에 구성 요소를 배치하는 것입니다. 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>