是否可以在运行时以编程方式更改 FloatingActionButton 大小?

Is it possible to change FloatingActionButton size at runtime programatically?

我正在使用支持库中的 FloatingActionButton。我注意到只能在 XML 中使用属性 app:fab_size="".

更改大小

我查看了源代码,没有任何方法可以在应用 运行 时更改晶圆厂大小。

我只是想根据用户输入在 MININORMAL 之间更改 fab 的大小,因此我需要以编程方式进行。

有没有人找到办法做到这一点?

这是不可能的。大小在 FloatingActionButton 创建时确定,并在其生命周期内保持不变。没有允许动态更改大小的 public 方法。当然,您可以使用 java reflection 来访问私有 sizepadding 字段并更改它们,但那是 not a good 的想法。或者,您可以查看一些第 3 方实现,它允许动态更改按钮的大小,例如 one

我认为 FloatingActionButton setSize() 方法可以满足您的需求。如果您有一个名为 fabFloatingActionButton,您可以使用:

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();