我正在尝试在我的一个FAB中拥有用户的个人资料照片。我尝试了一种厚颜无耻的方式,给晶圆厂一个负面填充,但它不起作用。还有填充物。如何删除填充并填充FAB?
这是我的工厂:
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|start"
android:src="@drawable/testpropic"
android:padding="-50dp"
android:elevation="0dp"
android:id="@+id/profileFAB"
android:stateListAnimator="@null"
app:pressedTranslationZ="12dp"
android:visibility="gone"
/>
答案 0 :(得分:2)
有两种方法可以达到预期的效果:
只需覆盖Android支持的原始尺寸即可 库添加:
<dimen name="design_fab_image_size" tools:override="true">48dp</dimen>
到dimens.xml
,这会自动覆盖design_fab_image_size
如How to remove auto padding of FAB button in android?
注意:在这种情况下,48dp是浮动操作按钮的宽度。
ImageView
库代替Transformation
,使用圈Picasso
FloatingActionButton
。您将失去简单的Fab功能和动画,但您可以更灵活地正确设置图像。当您按下按钮时设置FAB动画(即显示所有四个浮动操作按钮,将其替换为具有相同尺寸和属性的ImageView
,将很容易更改为您的XML)该课程的一个例子是:
public class CircleTransform implements Transformation {
@Override
public Bitmap transform(Bitmap source) {
int size = Math.min(source.getWidth(), source.getHeight());
int x = (source.getWidth() - size) / 2;
int y = (source.getHeight() - size) / 2;
Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size);
if (squaredBitmap != source) {
source.recycle();
}
Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig());
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
BitmapShader shader = new BitmapShader(squaredBitmap,
BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
paint.setShader(shader);
paint.setAntiAlias(true);
float r = size / 2f;
canvas.drawCircle(r, r, r, paint);
squaredBitmap.recycle();
return bitmap;
}
@Override
public String key() {
return "Circle";
}
}
以及Picasso
使用此类技术的示例如下:
Picasso.with(context).load(imageUri).transform(new CircleTransform()).into(imageView);
注意:.load()
可以使用字符串URL或资源ID
<强>更新强>:
如果您想在圆圈FloatingActionButton
中使用圆圈图片,请使用这两种技巧,但请改用FloatingActionButton
。转换图片,然后使用FloatingActionButton
将其设置为Picasso
。