По-видимому, в ограниченном макете, когда вы анимируете плавающую кнопку действия с помощью translate
, нажатие кнопки остается там, где FAB был первоначально нарисован, когда представление было создано и надуто. Вместо этого я решил использовать нижнюю и нижнюю границу полей для кнопок с плавающим действием miniFabs:
android:layout_marginBottom=""
android:layout_marginEnd=""
, чтобы разместить плавающие кнопки на экране, где я хотел, когда вид изначально рисуется и раздувается относительно основного FAB. Кроме того, поскольку это ограниченный макет, я использовал:
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
, чтобы поместить кнопки в нижний правый угол, где расположен основной FAB, в противном случае было бы намного сложнее рассчитать поля margin-bottom и margin-top этих мини-фабрик.
Затем я использую анимацию alpha
и анимацию scale
на мини-фабриках. Это сохраняет мини-фабы в одном и том же месте для событий щелчка, но дает им некоторую анимацию, поэтому они имеют немного чутья.
Я также удостоверился, что для свойства isEnabled()
каждого FAB задано значение false, как только я установил, что их видимость пропала, в противном случае событие click все равно будет там.