How to set Floating Action Button image to fill the button?

有些话、适合烂在心里 提交于 2019-12-05 03:46:07

The solution is app:maxImageSize = "56dp" property set to your FAB size.

  1. Have an image or vector asset, preferably in perfect circle shape and perfectly fit to canvass (no empty margins).
  2. Know the actual size of Floating Action Bar (FAB) - Default (56 x 56dp) or Mini (40 x 40dp).
  3. XML Code thusly:
<com.google.android.material.floatingactionbutton.FloatingActionButton
   android:src="@drawable/perfect_fit_circle_image"
   app:maxImageSize="56dp"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content" />

Set the following property for the FAB

android:scaleType="center"

if that does not work try using property

app:fabSize="mini"

Use below code

android:scaleType="fitXY"

If you are setting a rounded png image, work around for this is to extend the floatingActionButton class then override the on onMeasure method and set the padding to 0, and scaleType To centerCrop

public class FloatingImageButton extends FloatingActionButton {


public FloatingImageButton(Context context) {
    super(context);
}

public FloatingImageButton(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    setPadding(0, 0, 0, 0);
    setScaleType(ScaleType.CENTER_CROP);


}
}

xml sample

    <com.tabz.app.FloatingImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/camera_circle"
    android:layout_gravity="bottom|end"
    android:layout_margin="16dp"/>

output

Set scale for the float button in xml

android:scaleX="2.0"

Or you can do it programmaticaly:

someButton.setScaleX(2.0f);
someButton.setScaleY(2.0f);

With the Material Components library, according to the doc, you can use the attribute app:maxImageSize.

You can use a custom dimension, but you can also refer to these defined dimensions.

<dimen name="design_fab_size_mini">40dp</dimen>
<dimen name="design_fab_size_normal">56dp</dimen>

Just use:

 <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        app:srcCompat="@drawable/ic_add_24px"
        app:maxImageSize="@dimen/design_fab_size_normal"
        ../>

Here the result with the standard dimension (<dimen name="design_fab_image_size">24dp</dimen>) and the design_fab_size_normal.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!