2016-11-21 67 views
0

我有一个CardView,ImageView与左下角对齐。位图高度与ImageView高度不匹配,即使设置为相同的值

enter image description here

我收到的ImageView的高度,并将其设置为位图的高度。

iv.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 
      int height = iv.getMeasuredHeight(); 

      Paint widthPaint = new Paint(); 
      widthPaint.setTextSize(200f); 
      float width = widthPaint.measureText(text); 

      Bitmap bmOverlay = Bitmap.createBitmap((int) width + S.dpToPx(ctx, 20), height, Bitmap.Config.ARGB_8888); 
      Canvas canvas = new Canvas(bmOverlay); 
      Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
      paint.setStyle(Paint.Style.FILL); 
      canvas.drawColor(Color.argb(220, 244, 244, 244)); 
      paint.setColor(Color.TRANSPARENT); 
      paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC)); 
      paint.setTextSize(200f); 
      paint.setTextAlign(Paint.Align.CENTER); 

      canvas.drawText(text, canvas.getWidth()/2, (canvas.getHeight()/2) - ((paint.descent() + paint.ascent())/2), paint); 

      iv.setImageBitmap(bmOverlay); 
     } 
    }); 

两个iv.getMeasuredHeight();bmOverlay.getHeight()的输出是120,但位图没有被覆盖的ImageView。我不明白为什么。

ImageView的XML。

<ImageView 
      android:id="@+id/rquiz_iv_topic" 
      android:layout_width="80dp" 
      android:layout_height="40dp" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentLeft="true"/> 
+0

android:scale_type =“fitxy” – HourGlass

+0

你可以通过你的布局代码,因为我不会缩放类型将在未来帮助你 –

回答

0

在你的imageview中设置scaleType =“centerInside”和adjustViewBounds =“true”。

 <ImageView 
     android:id="@+id/rquiz_iv_topic" 
     android:layout_width="80dp" 
     android:layout_height="40dp" 
     android:layout_alignParentBottom="true"    
     android:layout_alignParentLeft="true" 
     android:adjustViewBounds="true" 
     android:scaleType="centerInside" 
     /> 

参考更多详细信息ImageView.ScaleType

+0

这是一种缩放方法。但为什么位图高度和图像视图高度是相同的缩放比例是必要的? – suku

+0

我明白你的答案...我的观点是我不想缩放,所以我做了imageview的位图高度。没有缩放,它不能正常工作。 – suku

0

要归档什么:设置ImageView的确切尺寸与位图有些不妥。

你需要适合所有的手机屏幕,而不是设置它按像素查看。

您可以:

1.尊重家长的方式: 把ImageViewLinearLayout,设定重量为0.5(指适合的LinearLayout 50%),并设置相关的(垂直或水平)或高度宽度为0dp(让Layout Manager来处理大小)。

而且,设定图像规模fitXY/centerCrop(或者你可以尝试其他比例)

2. 尊重位图方式: 把ImageViewRelativeLayout,设置其他附近的浏览袖手旁观与ImageViewlayout_alignBottom/layout_alignLeft等。并将ImageView高度和/或宽度设置为wrap_content,让Layout处理大小。

相关问题