2016-11-21 120 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處理大小。