如何设置浮动操作按钮图像以填充按钮?

时间:2017-06-12 09:19:13

标签: android android-button floating-action-button

通常会为浮动动作按钮设置图标,但我需要设置图像,这样我才能制作圆形图像。

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

enter image description here

我的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>

有关如何修复它的任何想法?该如何正确制作?

7 个答案:

答案 0 :(得分:4)

解决方案是将int main() { int building = {1,2,3,4 }; int apts = {1,2,3,4,5,6,7,8,9,10 }; vector<unit > units(40); int vectorCounter = 0; for (int i = 0; i < 4; i++) { for (int j = 0; j < 10; j++) { unit myunit(building[i], apts [j]) ; units[vectorCounter++] = myunit ; ~unit() ; } } 属性设置为您的FAB大小。

  1. 具有图像或矢量资产,最好呈完美的圆形,并且完全适合画布(无空白边距)。
  2. 了解实际的size of Floating Action Bar (FAB)-默认值(56 x 56dp)或迷你(40 x 40dp)。
  3. 因此,
  4. XML代码:
app:maxImageSize = "56dp"

答案 1 :(得分:2)

为FAB设置以下属性

android:scaleType="center"

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

app:fabSize="mini"

答案 2 :(得分:2)

使用以下代码

android:scaleType="fitXY"

答案 3 :(得分:1)

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

android:scaleX="2.0"

或者您可以通过编程方式做到这一点:

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

答案 4 :(得分:1)

如果要设置圆形的png图像,解决方法是扩展floatActionButton类,然后覆盖ononMeasure方法并将padding设置为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"/>

输出

enter image description here

答案 5 :(得分:0)

根据Material Components library,使用doc,您可以使用属性 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的结果。

enter image description here enter image description here

答案 6 :(得分: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. 在FAB中添加app:tint="@null"android:scaleType="fitCenter"