我有一个小圆形的联系人照片视图,我需要向用户显示。 如果照片可用,我应该显示它,同时图像圆形为圆形,并且有一个高程。
如果照片不可用,我会在里面显示一个带有背景的图标,同时它仍然是圆形的并且有高度。
我设法让照片显示仅在Android 5及更高版本上运行:
但是,它试图显示FAB的背景时边缘颜色不好,并且在Android 4.x及其下方显示为简单的矩形内容,没有任何与FAB相关的内容,可能是因为padding正在保护它以显示阴影。
我还需要能够添加笔划(圆形图像周围的细线特定颜色),但我不确定如何添加它。
这是在布局文件中:
<android.support.design.widget.FloatingActionButton
android:id="@+id/image"
android:layout_width="@dimen/test"
android:layout_height="@dimen/test"/>
“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中添加笔划?
答案 0 :(得分:1)
我认为我写这篇文章的速度太快了,而这里似乎已有一篇关于它的文章:
How to add a shadow and a border on circular imageView android?
我将看一下它,看看它是否符合我需要的要求。
编辑:它看起来不像FAB(尤其是影子),而且我没有看到将小内容放在中心的能力,就像在FAB中一样。它始终将内容置于中心裁剪方式。当然,我可以在其中放入一个较小尺寸的图像......
编辑:我想我这次找到了合适的图书馆: https://github.com/lopspower/CircularImageView它允许阴影,自定义阴影大小和颜色,以及边框,以及如何缩放图像。
它不是一个FAB,它没有能力将图像置于中心而不会裁剪,但它对我来说已经足够了。