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.