web-dev-qa-db-ja.com

ImageViewScaleTypeはパディングを無視します

白い背景と1dpのパディングで設定されたImageviewがあります。これにより、境界線のような効果が作成されます。これは、望ましい結果です。

ここで、scaleTypeをcenterCropに設定すると、上部と下部のパディングが無視されます。
それで、私はまだ左側と右側に境界線を持っていますが、上部と下部にはありません。

これが起こらないようにするアイデアを持っている人はいますか?または、画像の周囲に境界線を作成する別の簡単な方法。カスタムグリッドビューに使用します

   <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" />
30
<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

Android:cropToPadding = "true"

次に、imageViewは、選択したパディングを尊重します。

165
Manolo Garcia

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>
2
Shrikant

@マノロガルシアの答えは正しいです。これは、境界線、スケールタイプの中央の切り抜き、およびパディングを使用した動的な画像表示に役立ちました。

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);
0
Kedar Parmar