2012-06-01 105 views
28

我有一個Imageview設置了白色背景和1dp填充,這會創建一個類似邊框的效果,這是所需的結果。ImageView ScaleType忽略填充

現在,如果我將scaleType設置爲centerCrop,它將忽略頂部和底部的填充。
因此,我仍然在左側和右側有我的邊框,但不在頂部和底部。

任何人有想法阻止這種情況發生? 或另一種快速創建圖像邊框的快速方法。我用它爲我定製的GridView

<ImageView 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:background="#FFFFFF" 
      android:contentDescription="@string/test" 
      android:padding="1dp" 
      android:src="@drawable/some_photo" 
      android:scaleType="centerCrop" /> 
+0

機器人:scaleType =「fitxy」檢查 – Khan

+2

沒有將伸展的形象,我試圖阻止 –

+0

還設置機器人:adjustViewBounds =比,而不是採用了android「真」,但仍然是拉伸圖像: src使用android:背景 – Khan

回答

-7

我剛剛遇到了同樣的問題,我的解決方法將是添加android:layout_marginRight =「5dip」

<ImageView 
    android:layout_width="40dp" 
    android:layout_height="30dp" 
    android:background="#ffffffff" 
    android:src="@drawable/liveview_logo" 
    android:layout_marginRight="5dip"/> 
+0

謝謝,它的工作原理,我認爲我不能在gridView中使用額外的linearlayout,結果我可以。 –

+3

在所有情況下都不可行。 Manolo Garcia有正確答案 – Makibo

+1

Manolo Garcia的答案是正確的,這個保證金的權利沒有任何意義。 –

2

您可以通過設置android:background="@drawable/edit_border"

而且你edit_border給邊境:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" > 

    <stroke 
     android:width="2dp" 
     android:color="#EBDDE2" /> 

    <padding 
     android:bottom="2dp" 
     android:left="2dp" 
     android:right="2dp" 
     android:top="4dp" /> 

    <gradient 
     android:centerColor="@color/white" 
     android:endColor="@color/white" 
     android:startColor="@color/white" /> 

    <corners android:radius="8dp" /> 

</shape> 
+0

沒有得到邊框,但在我的風景肖像圖片Imageviews仍然沒有顯示頂部和底部邊框 –

154
<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:contentDescription="@string/test" 
    android:padding="1dp" 
    android:src="@drawable/some_photo" 
    android:cropToPadding="true" 
    android:scaleType="centerCrop" /> 

你只需要添加android:cropToPadding

機器人:cropToPadding = 「真」

,然後ImageView的是要尊重你所選擇的填充。

+3

歡迎並感謝Manolo的替代答案。無法測試它,但對我來說感覺不錯。 –

+2

這是對 – JesperB

+2

這個問題的正確答案。 –

0

@Manolo Garcia's Answer是正確的。 這幫助我動態圖像使用邊框,縮放類型中心裁剪和填充。

final ImageView imageView = new ImageView(context); 
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(200,200); 
lp.setMargins(0, 0, 10, 0); 
imageView.setLayoutParams(lp); 
imageView.setAdjustViewBounds(true); 
imageView.setCropToPadding(true); 
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
imageView.setBackgroundResource(R.drawable.img_blue_border); 
imageView.setPadding(5, 5, 5, 5);