android – 如何使用没有填充的选项的FAB,但仍然有它的高度?

背景

我有一个小圆形联系人照片视图,我需要向用户显示.
如果照片可用,我应该显示它,同时图像圆形到圆形,并有一个高程.

如果照片不可用,我会在里面显示一个带有背景的图标,同时它仍然是圆形的并且有高度.

问题

我设法让照片显示仅适用于Android 5及更高版本:

《android – 如何使用没有填充的选项的FAB,但仍然有它的高度?》

但是,当它试图显示FAB的背景时,它的边缘颜色很差,并且在Android 4.x及其下面它显示为一个简单的矩形内容,没有任何与FAB相关的内容,可能是因为填充是什么的保护它以显示阴影.

我还需要能够添加笔划(圆形图像周围的细线特定颜色),但我不确定如何添加它.

我试过的

这是在布局文件中:

<android.support.design.widget.FloatingActionButton
    android:id="@+id/image"
    android:layout_width="@dimen/test"
    android:layout_height="@dimen/test"/>

“测试”是80dp.

这是在代码中:

    FloatingActionButton floatingActionButton = (FloatingActionButton) view.findViewById(R.id.image);
    floatingActionButton.setPadding(0, 0, 0, 0);
    final Bitmap bitmap = ...
    RoundedCornersDrawable roundedCornersDrawable = new RoundedCornersDrawable(getResources(), bitmap, bitmap.getWidth() / 2);
    floatingActionButton.setImageDrawable(roundedCornersDrawable);

RoundedCornersDrawable的代码:

public class RoundedCornersDrawable extends BitmapDrawable {

    private final BitmapShader bitmapShader;
    private final Paint p;
    private final RectF rect;
    private final float borderRadius;

    public RoundedCornersDrawable(final Resources resources, final Bitmap bitmap, final float borderRadius) {
        super(resources, bitmap);
        bitmapShader = new BitmapShader(getBitmap(), Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
        final Bitmap b = getBitmap();
        p = getPaint();
        p.setAntiAlias(true);
        p.setShader(bitmapShader);
        final int w = b.getWidth(), h = b.getHeight();
        rect = new RectF(0, 0, w, h);
        this.borderRadius = borderRadius < 0 ? 0.15f * Math.min(w, h) : borderRadius;
    }

    @Override
    public void draw(final Canvas canvas) {
        canvas.drawRoundRect(rect, borderRadius, borderRadius, p);
    }
}

这个问题

如何让FAB以这种方式工作?对于所有Android版本,我如何随意禁用填充,但仍然有带阴影的圆角图像?

如何在圆角FAB中添加笔划?

最佳答案 我觉得我写这篇文章的速度太快了,而这里似乎已有一篇关于它的内容:

How to add a shadow and a border on circular imageView android?

我将看看它,看看它是否符合我的需求.

编辑:它看起来不像FAB(尤其是阴影),而且我没有看到将小内容放在中心的能力,就像在FAB中一样.它始终将内容置于中心裁剪方式.

当然,我可以在其中放入一个较小尺寸的图像….

编辑:我想我这次找到了合适的图书馆:
https://github.com/lopspower/CircularImageView

它允许阴影,自定义阴影大小和颜色,以及边框,以及如何缩放图像.

它不是一个FAB,它没有能力将图像置于中心而不进行裁剪,但这对我来说已经足够了.

点赞