2017-02-28 16 views
1

我想在我的FAB中有一个用户的个人资料图片。我尝试了一个厚颜无耻的方式,给了一个负面的填充,但它不起作用。还有填充。我如何删除填充并填充FAB?FAB与用户的个人资料里面没有任何填充在Android中

这是我的晶圆厂:

<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 :

回答

0

有两种方法可以达到你想要的效果:

  1. 只是简单地覆盖了支持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使用所述Picasso库,而不是一个FloatingActionButton的圆Transformation。您将失去简单的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); 
    

    :​​可以接受字符串URL或资源ID

    更新: 如果你想有一个圆圈里面FloatingActionButton一圈图像,使用这两种技术,但使用FloatingActionButton代替。转换图像,然后使用Picasso将其设置为FloatingActionButton

    +0

    谢谢你详细解答!尝试了第一种方法和当然情况得到改善。但是由于我的照片是正方形的,照片上的角落就离开了FAB。我如何解决这个问题? –

    +0

    您必须对两个答案进行组合,而不是ImageView,它代表了.ica()for picasso,使用您的浮动操作按钮。因此,在将图像设置为浮动动作按钮之前,应该先将图像转换为圆形。 –

    +0

    您还需要帮助吗? –

    相关问题