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

时间:2016-05-19 10:38:04

标签: android android-support-library floating-action-button androiddesignsupport

我正在使用支持库中的FloatingActionButton。我注意到只能使用 app:fab_size =“”属性在XML中更改大小。

我查看了源代码,并且没有方法可以在应用运行时更改工厂大小。

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

有没有人找到办法呢?

3 个答案:

答案 0 :(得分:5)

我认为setSize() FloatingActionButton方法符合您的要求。如果您有一个名为fab的{​​{1}},则可以使用:

fab.setSize(FloatingActionButton.SIZE_MINI);
fab.setSize(FloatingActionButton.SIZE_NORMAL);

答案 1 :(得分:1)

这是不可能的。大小在FloatingActionButton创建时确定,并在其生命周期内保持静态。没有允许动态更改大小的公共方法。当然,您可以使用java reflection来访问私人sizepadding字段并更改它们,但这是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();