Как закрепить плавающую кнопку во фрагменте?
У активити корневой элемент CoordinatorLayout
, чтобы показывать SearchBar
, а также контейнер для фрагментов FragmentContainerView
. У фрагмента тоже корневой элемент CoordinatorLayout
, чтобы показывать FloatingActionButton
. Когда у фрагмента много текста, кнопка не закрепляется в границах экрана. Она всегда в конце текста. Тоже самое происходит если фрагмент в корне будет использовать ConstraintLayout
.
Как закрепить кнопку во фрагменте? Без ее выноса в активити.
Активити
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
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">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.search.SearchBar
android:id="@+id/doc_page_search_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Поиск" />
</com.google.android.material.appbar.AppBarLayout>
<com.google.android.material.search.SearchView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="@string/hint_doc_page_search"
app:layout_anchor="@id/doc_page_search_bar">
<!-- Search suggestions/results go here (ScrollView, RecyclerView, etc.). -->
</com.google.android.material.search.SearchView>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/doc_page_nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
tools:layout="@layout/fragment_doc_page_viewer" />
</androidx.core.widget.NestedScrollView>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/doc_page_bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/menu_navigation_doc_page" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Фрагмент
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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">
<androidx.core.widget.NestedScrollView
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<TextView
android:id="@+id/markdown_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/view_indent_horizontal"
android:paddingBottom="@dimen/view_indent_vertical"
android:scrollbarThumbVertical="@android:color/transparent"
android:textAppearance="@style/TextAppearance.Material3.BodyLarge"
android:textColor="?attr/colorOnBackground"
android:textIsSelectable="true"
tools:text="Lorem ipsum dolor sit amet" />
</androidx.core.widget.NestedScrollView>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@id/fab"
style="@style/Widget.Material3.FloatingActionButton.Primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_indent_from_screen"
android:src="@drawable/ic_edit"
app:fabSize="normal" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Ответы (1 шт):
Автор решения: ЮрийСПб
→ Ссылка
По идее надо добавить вот это в FAB:
app:layout_anchor="@id/scroll_view"
app:layout_anchorGravity="bottom|end"