Android中如何自定义FloatingActionButton

刚使用FloatingActionButton的时候,不知道这个控件的背景和上层图标大小怎么改,然后就上网查了一下,大部分都是在valuse文件夹下新建dimen.xml文件,然后用80dp此标签覆盖源码里的design_fab_size_normal值,后来自己好奇也去看了一下源码,发现其实没这么麻烦,用标签就可以解决,估计是谷歌官方最近更新了源码库,不然那些大佬不可能发现不了(>~<)
(1)自定义按钮大小:
app:fabCustomSize=“dp值”
(2)自定义上层图片大小
app:maxImageSize=“dp值”
下面只是记录一下自己发现的过程,不感兴趣的可以直接忽视啦
先放源码

private int getSizeDimension(int size) {
    if (this.customSize != 0) {
        return this.customSize;
    } else {
        Resources res = this.getResources();
        switch(size) {
        case -1:
            int width = res.getConfiguration().screenWidthDp;
            int height = res.getConfiguration().screenHeightDp;
            return Math.max(width, height) < 470 ? this.getSizeDimension(1) : this.getSizeDimension(0);
        case 0:
        default:
            return res.getDimensionPixelSize(dimen.design_fab_size_normal);
        case 1:
            return res.getDimensionPixelSize(dimen.design_fab_size_mini);
        }
    }
}

可以看到其实不用覆盖源码里的design_fab_size_normal值也可以,因为 if (this.customSize != 0) {
return this.customSize;
}
这段代码返回的是customSize,那么customSize是怎么赋值的呢,在源码里Ctrl+F查了一下

this.customSize = a.getDimensionPixelSize(styleable.FloatingActionButton_fabCustomSize, 0);

可以看到其实这个值是从fabCustomSize标签取值的,额,搞了半天,原来可以直接用此标签自定义背景大小,后来又找了一下,发现按钮上层的图标大小是由app:maxImageSize这个标签定义的

this.maxImageSize = a.getDimensionPixelSize(styleable.FloatingActionButton_maxImageSize, 0);

你可能感兴趣的:(Android)