我正在使用支持库中的FloatingActionButton。我注意到只能使用 app:fab_size =“”属性在XML中更改大小。
我查看了源代码,并且没有方法可以在应用运行时更改工厂大小。
我只是想根据用户输入在 MINI 和 NORMAL 之间更改fab的大小,所以我需要以编程方式进行。
有没有人找到办法呢?
答案 0 :(得分:5)
我认为setSize()
FloatingActionButton
方法符合您的要求。如果您有一个名为fab
的{{1}},则可以使用:
fab.setSize(FloatingActionButton.SIZE_MINI);
fab.setSize(FloatingActionButton.SIZE_NORMAL);
答案 1 :(得分:1)
这是不可能的。大小在FloatingActionButton
创建时确定,并在其生命周期内保持静态。没有允许动态更改大小的公共方法。当然,您可以使用java reflection
来访问私人size
和padding
字段并更改它们,但这是not a good
的想法。或者,您可以查看一些第三方实现,它允许动态更改按钮的大小,例如one
答案 2 :(得分:0)
您可以使用setCustomSize(),此方法仅更改customSize属性,因此在更改customSize之后必须请求requestLayout。
public void setCustomSize(@Px int size) {
if (size < 0) {
throw new IllegalArgumentException("Custom size must be non-negative");
} else {
this.customSize = size;
}
}
下面的代码应更改大小。
fab.setCustomSize(size);
fab.requestLayout();