【问题标题】:Is it possible to change FloatingActionButton size at runtime programatically?是否可以在运行时以编程方式更改浮动操作按钮的大小?
【发布时间】:2016-05-19 10:38:03
【问题描述】:
我正在使用支持库中的FloatingActionButton。我注意到只能使用 app:fab_size="" 属性在 XML 中更改大小。
我查看了源代码,没有任何方法可以在应用运行时更改晶圆厂的大小。
我只是想根据用户输入在 MINI 和 NORMAL 之间更改 fab 的大小,因此我需要以编程方式进行。
有没有人找到办法做到这一点?
【问题讨论】:
标签:
android
android-support-library
floating-action-button
androiddesignsupport
【解决方案1】:
我认为 FloatingActionButton setSize() 方法可以满足您的需求。如果你有一个名为fab 的FloatingActionButton,你可以使用:
fab.setSize(FloatingActionButton.SIZE_MINI);
fab.setSize(FloatingActionButton.SIZE_NORMAL);
【解决方案2】:
这是不可能的。大小在FloatingActionButton 创建时确定,并在其生命周期内保持不变。没有允许动态更改大小的公共方法。当然,您可以使用java reflection 来访问私有size 和padding 字段并更改它们,但这是not a good 的想法。或者,您可以查看一些 3rd 方实现,它允许动态更改按钮的大小,例如 one
【解决方案3】:
你可以使用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();