13

通常为浮动操作按钮设置图标,但我需要设置一个图像,所以我可以制作一个圆形图像。

我将它添加到项目中(使用 Android Studio-> New -> Image Asset),但图像没有填满整个按钮:

在此处输入图像描述

我的xml:

<com.github.clans.fab.FloatingActionMenu
    android:id="@+id/run_menu"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:paddingBottom="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:visibility="visible"
    fab:fab_colorNormal="#DA4336"
    fab:fab_colorPressed="#E75043"
    fab:fab_colorRipple="#99FFFFFF"
    fab:fab_shadowColor="#66000000"
    fab:fab_showShadow="true"
    fab:layout_constraintBottom_toBottomOf="parent"
    fab:layout_constraintHorizontal_bias="0.0"
    fab:layout_constraintLeft_toLeftOf="parent"
    fab:layout_constraintRight_toRightOf="parent"
    fab:layout_constraintTop_toTopOf="parent"
    fab:layout_constraintVertical_bias="0.0"
    fab:menu_backgroundColor="#ccffffff"
    fab:menu_fab_label="Choose an action"
    fab:menu_labels_colorNormal="#333333"
    fab:menu_labels_colorPressed="#444444"
    fab:menu_labels_colorRipple="#66FFFFFF"
    fab:menu_labels_ellipsize="end"
    fab:menu_labels_maxLines="-1"
    fab:menu_labels_position="left"
    fab:menu_labels_showShadow="true"
    fab:menu_labels_singleLine="true"
    fab:menu_openDirection="up"
    android:layout_height="0dp"
    android:layout_width="0dp">

    <com.github.clans.fab.FloatingActionButton
        android:id="@+id/shop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/store"
        fab:fab_label="Store" />

</com.github.clans.fab.FloatingActionMenu>

关于如何解决它的任何想法?应该如何正确制作?

4

7 回答 7

23

解决方案是将app:maxImageSize = "56dp"属性设置为您的 FAB 大小。

  1. 拥有一个图像或矢量资产,最好是完美的圆形并且完全适合画布(没有空白边距)。
  2. 了解浮动操作栏 (FAB) 的实际尺寸- 默认 (56 x 56dp) 或迷你 (40 x 40dp)。
  3. 因此 XML 代码:
<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" />
于 2019-03-28T05:09:10.103 回答
3

为 FAB 设置以下属性

android:scaleType="center"

如果这不起作用,请尝试使用属性

app:fabSize="mini"

于 2017-06-12T09:26:38.350 回答
2

使用材料组件库,根据文档,您可以使用该属性app:maxImageSize

您可以使用自定义维度,但也可以参考这些定义的维度。

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

只需使用:

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

这里是标准尺寸 ( <dimen name="design_fab_image_size">24dp</dimen>) 和 的结果design_fab_size_normal

在此处输入图像描述在此处输入图像描述

于 2019-09-03T11:27:45.853 回答
2

使用下面的代码

android:scaleType="fitXY"
于 2017-06-12T09:54:33.527 回答
1

如果您要设置圆形 png 图像,解决方法是扩展 floatingActionButton 类,然后覆盖 onMeasure 方法并将填充设置为 0,并将 scaleType 设置为 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 示例

    <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"/>

输出

在此处输入图像描述

于 2019-03-28T08:52:15.040 回答
1

在 xml 中设置浮动按钮的比例

android:scaleX="2.0"

或者您可以以编程方式执行此操作:

someButton.setScaleX(2.0f);
someButton.setScaleY(2.0f);
于 2019-02-14T08:15:40.183 回答
0
  1. 通过在 dimens.xml 中添加以下行来覆盖 FAB 中嵌套图像的图像大小尺寸

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

     (I used 56dp cause fab size in guidelines is 56dp)
  1. 添加 app:tint="@null"android:scaleType="fitCenter"在 FAB 中。
于 2020-11-05T10:14:59.967 回答