web-dev-qa-db-fra.com

ImageView ScaleType ignore le remplissage

J'ai un ensemble Imageview avec un fond blanc et un remplissage de 1dp, cela crée un effet de type bordure, qui correspond au résultat souhaité.

Maintenant, si je règle scaleType sur centerCrop, le remplissage en haut et en bas est ignoré.
J'ai donc toujours ma bordure à gauche et à droite, mais pas en haut et en bas.

Quelqu'un a-t-il une idée pour empêcher que cela ne se produise? Ou un autre moyen rapide de créer une bordure autour des images. Je l'utilise pour ma grille personnalisée

   <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" />
29
Lars Van de Donk
<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" />

Il vous suffit d'ajouter Android: cropToPadding

Android: cropToPadding = "true"

ensuite, l'imageView respectera le remplissage que vous aurez choisi.

164
Manolo Garcia

Vous pouvez donner une bordure en définissant Android:background="@drawable/edit_border"

Et votre 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

La réponse de @Manolo Garcia est correcte. Cela m'a aidé dans la visualisation d'images dynamique en utilisant border, Rognage au centre du type d'échelle et le remplissage.

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