Проблема с размещением кнопки floatingactionв фрагменте

#java #android #android-layout #android-fragments

Вопрос:

У меня проблема с позиционированием FAB внутри фрагмента. ФАБ находится в левом верхнем углу, но мне он нужен в правом нижнем углу.

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.vrhcaby.VrhcabyFragment">

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textAlignment="center"
    android:src="@mipmap/dice_180"
    android:layout_margin="100px" />

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@ id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    app:srcCompat="@android:drawable/ic_dialog_email" />

 </RelativeLayout>
 

введите описание изображения здесь

Что у меня не так?

Комментарии:

1. Где вы хотите добавить кнопку плавающего действия в Действие или во фрагменте?

Ответ №1:

как я читал , FAB не очень хорошо работает с относительным макетом, и вместо этого вам следует использовать макет координатора.

  • сначала включите его зависимость в build.gradle(Модуль:приложение).
 dependencies {
    ...
    implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
    ...
}
 
  • затем объявите макет координатора следующим образом вместо относительного макета
 <?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.vrhcaby.VrhcabyFragment">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textAlignment="center"
        android:src="@mipmap/dice_180"
        android:layout_margin="100px" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@ id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        app:srcCompat="@android:drawable/ic_dialog_email" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>
 

Если вам нужна дополнительная информация, вы можете прочитать больше об этом здесь

Комментарии:

1. Большое спасибо за помощь. Теперь все работает так, как ожидалось 🙂

Ответ №2:

Относительный макет не поддерживает fab, в то время как макет координатора поддерживает. вы можете сделать что-то подобное.

 <androidx.coordinatorlayout.widget.CoordinatorLayout 

xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">

<ImageView
    android:id="@ id/ivPic"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/badimalika"
    android:scaleType="centerCrop"
    />

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@ id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@android:drawable/ic_dialog_email"
    app:layout_anchorGravity="bottom|end"
    app:layout_anchor="@id/ivPic"
    />
</androidx.coordinatorlayout.widget.CoordinatorLayout>