FAB中包含用户的个人资料,而Android中没有任何填充

时间:2017-02-28 15:55:07

标签: android floating-action-button

我正在尝试在我的一个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"
            />

This is what I am getting :

1 个答案:

答案 0 :(得分:2)

有两种方法可以达到预期的效果:

  1. 只需覆盖Android支持的原始尺寸即可 库添加:

    <dimen name="design_fab_image_size" tools:override="true">48dp</dimen>
    

    dimens.xml,这会自动覆盖design_fab_image_sizeHow to remove auto padding of FAB button in android?

  2. 中所述,由图书馆设置(可能不适用于第三方图书馆)

    注意:在这种情况下,48dp是浮动操作按钮的宽度。

    1. 使用ImageView库代替Transformation,使用圈Picasso FloatingActionButton。您将失去简单的Fab功能和动画,但您可以更灵活地正确设置图像。当您按下按钮时设置FAB动画(即显示所有四个浮动操作按钮,将其替换为具有相同尺寸和属性的ImageView,将很容易更改为您的XML)
    2. 该课程的一个例子是:

      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