是否可以在运行时以编程方式更改 FloatingActionButton 大小?
Is it possible to change FloatingActionButton size at runtime programatically?
我正在使用支持库中的 FloatingActionButton。我注意到只能在 XML 中使用属性 app:fab_size="".
更改大小
我查看了源代码,没有任何方法可以在应用 运行 时更改晶圆厂大小。
我只是想根据用户输入在 MINI 和 NORMAL 之间更改 fab 的大小,因此我需要以编程方式进行。
有没有人找到办法做到这一点?
这是不可能的。大小在 FloatingActionButton
创建时确定,并在其生命周期内保持不变。没有允许动态更改大小的 public 方法。当然,您可以使用 java reflection
来访问私有 size
和 padding
字段并更改它们,但那是 not a good
的想法。或者,您可以查看一些第 3 方实现,它允许动态更改按钮的大小,例如 one
我认为 FloatingActionButton
setSize()
方法可以满足您的需求。如果您有一个名为 fab
的 FloatingActionButton
,您可以使用:
fab.setSize(FloatingActionButton.SIZE_MINI);
fab.setSize(FloatingActionButton.SIZE_NORMAL);
你可以使用setCustomSize(),这个方法只是改变customSize属性,所以你必须在改变customSize之后请求Layout。
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();
我正在使用支持库中的 FloatingActionButton。我注意到只能在 XML 中使用属性 app:fab_size="".
更改大小我查看了源代码,没有任何方法可以在应用 运行 时更改晶圆厂大小。
我只是想根据用户输入在 MINI 和 NORMAL 之间更改 fab 的大小,因此我需要以编程方式进行。
有没有人找到办法做到这一点?
这是不可能的。大小在 FloatingActionButton
创建时确定,并在其生命周期内保持不变。没有允许动态更改大小的 public 方法。当然,您可以使用 java reflection
来访问私有 size
和 padding
字段并更改它们,但那是 not a good
的想法。或者,您可以查看一些第 3 方实现,它允许动态更改按钮的大小,例如 one
我认为 FloatingActionButton
setSize()
方法可以满足您的需求。如果您有一个名为 fab
的 FloatingActionButton
,您可以使用:
fab.setSize(FloatingActionButton.SIZE_MINI);
fab.setSize(FloatingActionButton.SIZE_NORMAL);
你可以使用setCustomSize(),这个方法只是改变customSize属性,所以你必须在改变customSize之后请求Layout。
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();