Фон для рисования не заполняет плавающую кнопку действия - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть FAB и я пытаюсь заполнить drawable (round_drawable.xml) для всего моего fab, но в настоящее время чертеж отображается в левом верхнем углу, как показано здесь,

enter image description here

Я попробовал решение из Установка src и фона для FloatingActionButton , но это не сработало, добавил большинство атрибутов из других источников, но ни один scaleType, src, background не сработал.

Как мне получить заполнить FAB round_drawable?

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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">

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="100dp"
        android:layout_height="95dp"

        android:scaleType="fitXY"
        app:backgroundTint="@color/white"
        android:src="@drawable/round_drawable"
        android:backgroundTintMode="src_atop"

        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent" />

</android.support.constraint.ConstraintLayout>

round_drawable.xml

@drawable/right - изображение в виде png стрелки вправо.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape
            android:innerRadius="50dp"
            android:shape="oval">

            <corners android:radius="10dp" />

            <gradient
                android:angle="45"
                android:endColor="#D425B5"
                android:startColor="#EBF928" />

        </shape>
    </item>
    <item
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"
        android:top="5dp">
        <bitmap
            android:gravity="center"
            android:src="@drawable/right" />
    </item>
</layer-list>

Ответы [ 3 ]

0 голосов
/ 20 ноября 2018

Вам не нужно указывать конкретный размер для FAB. И для него не требуется рисовать фон и для любого определенного цвета.Он имеет атрибут fabSize , в котором вы можете передавать предопределенные размеры, такие как mini (40dp), normal (56dp) .И все же, если вы хотите добавить размер, удалите размеры из тега <item>.Этот тег на самом деле делает ваш ничья маленьким.

проверьте этот пример кода для создания Fab с изображением в центре

<android.support.design.widget.FloatingActionButton
            android:id="@+id/fbtn_addNotification"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_marginBottom="@dimen/margin_16"
            android:layout_marginRight="@dimen/margin_16"
            app:srcCompat="@drawable/ic_add_white_28dp"
            app:backgroundTint="@color/colorPrimary"
            app:borderWidth="@dimen/margin_0"
            app:elevation="@dimen/margin_8"
            app:fabSize="normal"
            android:visibility="visible"
            app:pressedTranslationZ="@dimen/margin_5" />

Это будет выглядеть так.Надеюсь, это поможет ...

enter image description here

0 голосов
/ 18 марта 2019

Просто добавьте эту строку в ваш файл style.xml

<style name="FullImageFloatingButton" parent="Widget.Design.FloatingActionButton">
    <item name="fabSize">normal</item>
    <item name="maxImageSize">56dp</item>
</style>

<style name="FullImageMiniFloatingButton" parent="Widget.Design.FloatingActionButton">
    <item name="fabSize">mini</item>
    <item name="maxImageSize">40dp</item>
</style>

Используйте FullImageFloatingButton для обычного FloatingButton и FullImageMiniFloatingButton для мини-FloatingButton.

0 голосов
/ 20 ноября 2018

Просто добавьте эту строку в вас dimen.xml файл

<dimen name="design_fab_image_size" tools:override="true">56dp</dimen>

ПРИМЕЧАНИЕ: 56dp - это размер по умолчанию для кнопки FAB

  • По умолчанию -56dp
  • mini - 40dp
  • custom - все, что вы указали в fabCustomSize

СОВЕТ: используйте app:fabCustomSize, скорее дайте пользовательскийвысота по ширине для кнопки FAB.

Пример

в вашем макете

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:backgroundTint="@color/white"

    <!--inmprtent-->
    app:fabCustomSize="100dp"

    android:src="@drawable/round_drawable"
    android:backgroundTintMode="src_atop"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"/>

теперь создайте dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
    <dimen name="design_fab_image_size" tools:override="true">100dp</dimen>
</resources>

оставьте свои round_drawable.xml такими, какие есть, и вы готовы идти

Результат

enter image description here

ура..

...