Ошибка в дизайне материалов макета движения с расширенной кнопкой

#android #material-design #floating-action-button #android-motionlayout

#Android #материал-дизайн #кнопка с плавающим действием #android-motionlayout

Вопрос:

У меня есть приложение с реализованной расширенной кнопкой.

Кнопка отлично сжимается и расширяется в макете ограничений или в любом другом макете, кроме макета движения.

В котором кнопка не расширяется после сжатия и в расширенном состоянии, когда состояние кнопки изменяется на сжатие при нажатии кнопки, тогда текст исчезает, но размер остается прежним.

Версия ссылки material design «реализация ‘com.google.android.material:материал: 1.3.0-beta01′»

 <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
        android:id="@ id/btn_call_helpline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/dimen_20dp"
        android:text="@string/txt_emergency"
        android:textColor="@color/color_white"
        app:backgroundTint="@color/red"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:cornerRadius="@dimen/dimen_20dp"
        app:elevation="@dimen/dimen_10dp"
        app:icon="@drawable/ic_baseline_call_24"
        app:iconTint="@color/color_white"
        app:rippleColor="@color/color_white" />
 

Я проверил код, и у него нет такого ограничения, которое предотвращает сжатие и расширение.

Ответ №1:

У FAB, похоже, возникают проблемы с двойным измерением. (MotionLayout должен это сделать)

Простой способ обойти это — обернуть fab в контейнер типа LinearLayout, поместив LinearLayout в MotionLayout

  <LinearLayout
   android:id="@ id/fabwrap"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_marginBottom="20dp"
   app:layout_constraintEnd_toEndOf="parent"
   app:layout_constraintBottom_toBottomOf="parent"
   >

   <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
    android:id="@ id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    android:text="hello"
    android:textColor="@color/white"
    app:backgroundTint="#F00"
    app:icon="@drawable/ic_battery"/>
   </LinearLayout>