Android 安卓:用更大的图标创建更大的浮动动作按钮
我想创建一个更大的浮动动作按钮(FAB),比通常的56 dp更大,里面有一个更大的图标。 (出于我的目的,图标永远不会是自解释的,因此我将创建一个包含短文本的png文件,并将此png用作图标。) 增加晶圆厂的规模效果很好:Android 安卓:用更大的图标创建更大的浮动动作按钮,android,floating-action-button,Android,Floating Action Button,我想创建一个更大的浮动动作按钮(FAB),比通常的56 dp更大,里面有一个更大的图标。 (出于我的目的,图标永远不会是自解释的,因此我将创建一个包含短文本的png文件,并将此png用作图标。) 增加晶圆厂的规模效果很好: 由于我没有使用mini-FloatingActionButton,我重新定义了mini-button的大小。 在我的布局xml中,我指定: <android.support.design.widget.FloatingActionButton ... a
由于我没有使用mini-FloatingActionButton,我重新定义了mini-button的大小。
在我的布局xml中,我指定:
<android.support.design.widget.FloatingActionButton
...
app:fabSize="mini"
....
您可以尝试在维度中重新定义晶圆厂图像大小的最大大小。xml
:
<resources xmlns:tools="http://schemas.android.com/tools">
<dimen name="design_fab_size_mini" tools:override="true">80dp</dimen>
<dimen name="design_fab_content_size" tools:override="true">48dp</dimen>
</resources>
80dp
48dp
必须确保覆盖设计库中的原始资源。如果不适合您,请尝试使用design\u fab\u image\u size
而不是design\u fab\u content\u size
小心使用,因为这是一个黑客而不是实际的解决方案。如果在将来的设计库版本中更改了资源的名称,则解决方案可能无法工作。我的意见是坚持设计库中定义的尺寸,因为它是基于材料设计的推荐设计指南,使您的整个应用程序看起来很好。我偶然发现了这一点,然后通过尝试和错误找到了答案。如果同时将layout:width
和layout:height
设置为match\u parent
,并将浮动操作按钮包装在FrameLayout中(不必如此,但有意义,因为您只想设置按钮的大小)
然后将FrameLayout的宽度和高度设置为所需的任意值
我对Grace Coder的答案投了赞成票,因为它确实解决了这个问题,但我认为这种方法更安全,可能更可取
<FrameLayout
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_below="@+id/chronometer"
android:layout_centerHorizontal="true">
<android.support.design.widget.FloatingActionButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/chronometer"
android:layout_centerHorizontal="true"
android:layout_gravity="bottom"
android:clickable="true"
android:src="@android:drawable/ic_btn_speak_now"
android:id="@+id/record_fab" />
</FrameLayout>
顶部晶圆厂使用我的代码/变通方法,而底部晶圆厂使用标准(大部分是不可更改的)尺寸。只是对@GraceCoder的答案进行了澄清,@Tim Castelijns在上面的评论中指出了这一点
您应该转到res->values->dimensions.xml文件
并将其更改为添加
<dimen name="design_fab_size" tools:override="true">100dp</dimen>
<dimen name="design_fab_content_size" tools:override="true">98dp</dimen>
100dp
98dp
注意:
是的
设计制作尺寸
不是
设计制作尺寸迷你型120dp
150dp
在Android p预览版中,让晶圆厂与其父晶圆厂的尺寸相匹配对我来说已经不起作用了,因为图标的尺寸不再缩放,使其太小,偏离中心
我找到的最简单的替代方法是将晶圆厂放置在框架布局中,在晶圆厂上设置一个合理的边距,这样阴影就不会被切断(我使用了10dp),将两者的大小设置为wrap\u content
,然后将scaleX
和scaleY
添加到框架布局中
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleX="1.6"
android:scaleY="1.6">
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:clickable="true"
android:focusable="true"
android:src="@drawable/ic_send_white_24dp" />
</FrameLayout>
这与预期一样有效,允许按特定数量轻松缩放,并且不会影响任何其他浮动操作按钮。由于Design Support Library 27.1.0,因此有一种官方方法可以设置自定义晶圆厂尺寸:和相应的尺寸。要增加图标大小,您可以使用android:scaleType=“center”
和更大的可绘制图标更新:android:scaleType
现在可用fab.setScaleType(ImageView.scaleType.CENTER)
其他建议的解决方案也有一些缺点:
- 不能应用于单个按钮,本质上是一种黑客行为(使用非公共API,可能会发生更改)
- (或者只是将FAB的
layout\u width
和layout\u height
设置为所需的大小,这具有相同的效果)在棒棒糖制作前的设备上看起来非常棒更新:现在也开始发布棒棒糖(见下面的屏幕截图)
- 需要调整边距(因为视觉晶圆厂大小现在与其布局大小不匹配)并缩放不可缩放的部分:按钮边框和(棒棒糖前)阴影宽度
如API 19(左)和API 21(右)所示:
现在您可以轻松定制晶圆厂尺寸,只需添加
app:fabCustomSize="32dp"
像
用于更改晶圆厂尺寸用途
app:fabCustomSize="70dp"
和图标大小
app:maxImageSize="50dp"
范例
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/button_start"
style="@style/Widget.MaterialComponents.FloatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:backgroundTint="@android:color/holo_blue_bright"
app:fabCustomSize="70dp"
app:layout_anchor="@id/bottom_app_bar"
app:rippleColor="@android:color/holo_blue_dark"
app:srcCompat="@drawable/ic_play"
app:layout_anchorGravity="center|top"
android:focusable="true"
app:maxImageSize="40dp"
app:tint="@color/white_overlay_1"
/>
要调整晶圆厂内图标的大小:
app:maxImageSize="100dp"
整个例子:
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_marginEnd="25dp"
android:layout_marginBottom="25dp"
android:src="@drawable/ic_add"
app:fabCustomSize="100dp"
app:maxImageSize="75dp" />
谢谢Grace Coder。对我来说,如果我写的是“fab_size_mini”而不是“design_fab_size_mini”和“fab_content_size”而不是“design_fab_content_size”,那就完美了。回答得很好。fab_size_mini和fab_size_normal Works超级答案@Grace Coder如果有人想知道,你可以在这里找到dimen的名字:,看起来它确实是design\u fab\u image\u size
在我的情况下工作得很好,因为我必须为单个设备定制更好的解决方案,如果有多个fab按钮,只需增加一个大小。当你使fab比正常尺寸大时,它就工作了,但是,如果将晶圆厂缩小,则不会调整晶圆厂内图标的大小。此解决方案会在棒棒糖生产前的设备上产生视觉瑕疵,请参阅以了解详细信息。对于自定义尺寸,请参阅自定义图像-可以设置scaleX
,scaleY
-目前,在2020年,这是最可接受和完整的答案。谢谢不知道这怎么会不被接受,这很好,谢谢!您能告诉我如何以编程方式设置maxImageSize吗?我找不到答案。
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/button_start"
style="@style/Widget.MaterialComponents.FloatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:backgroundTint="@android:color/holo_blue_bright"
app:fabCustomSize="70dp"
app:layout_anchor="@id/bottom_app_bar"
app:rippleColor="@android:color/holo_blue_dark"
app:srcCompat="@drawable/ic_play"
app:layout_anchorGravity="center|top"
android:focusable="true"
app:maxImageSize="40dp"
app:tint="@color/white_overlay_1"
/>
app:maxImageSize="100dp"
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_marginEnd="25dp"
android:layout_marginBottom="25dp"
android:src="@drawable/ic_add"
app:fabCustomSize="100dp"
app:maxImageSize="75dp" />