Android: как изменить размер приложения: fabSize = "normal" для кнопки Floating Action

При использовании нового FloatingActionButton размер определяется app:fabSize="normal". Как установить, что в dp - размер, на который ссылается "normal"?

Я попытался создать values/attrs.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="app">
        <attr name="fabSize">
            <enum name="mini" value="50dp" />
            <enum name="normal" value="100dp" />
        </attr>
    </declare-styleable>
</resources>

Но я получаю ошибку

"normal" in attribute "fabSize" is not a valid integer

Ответ 1

Доступны два разных размера FAB: normal или mini

  • Normal (56dp) - этот размер должен использоваться в большинстве ситуаций.

  • Mini (40dp) - Должен использоваться только тогда, когда существует необходимость в непрерывности изображения с другими компонентами, отображаемыми на экране.

Ответ 2

Вы можете переопределить нормальные и мини-размеры, добавив следующее к values/dimens.xml:

<!-- Overriding sizes of the FAB -->
  <dimen name="design_fab_size_normal">90dp</dimen>
  <dimen name="design_fab_size_mini">30dp</dimen>

Трудная вещь была бы, если вам понадобилось больше двух размеров, в этом случае, я думаю, вам нужно создать пользовательский вид, расширяющий фабрику.

Ответ 3

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

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_centerInParent="true"
    android:orientation="horizontal" >

    <android.support.design.widget.FloatingActionButton
        android:layout_width="@dimen/custom_fab_size"
        android:layout_height="@dimen/custom_fab_size"
        app:fabSize="normal"
        android:clickable="true"
        android:src="@drawable/ic_mic_white_24dp"
        android:scaleType="center"/>
</LinearLayout>

Ответ 4

<dimen name="design_fab_size_normal">90dp</dimen>
<dimen name="design_fab_size_mini">30dp</dimen>
Set this in dimen file.