Android ImageView réglage de l'image Bitmap FitXY ne fonctionne pas
J'ai essayé pendant un très long moment à fixer l'image bitmap de sorte qu'il s'adapte à la ImageView
limites.
Ça ne fonctionne pas via scaleType: fitXY
. Mes images bitmap taille inférieure à la ImageView
'(Enregistré sur 100X100 pixels), je veux que mes images bitmap pour s'adapter et s'étendent dans la ImageView
.
Voici un code:
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imageView"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:src="@drawable/locked_image"
android:scaleType="fitXY"
/>
Voici le code de réglage de la ImageView
(je suis réglage de la scaleType
dans des endroits différents pour les tests):
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ImageView imageView;
if (convertView == null) {
imageView = (ImageView) getLayoutInflater().inflate(R.layout.item_grid_image, parent, false);
imageView.setScaleType(ScaleType.FIT_XY);
} else {
imageView = (ImageView) convertView;
imageView.setScaleType(ScaleType.FIT_XY);
}
imageLoader.displayImage(imagesIds[position], imageView, options);
imageView.setScaleType(ScaleType.FIT_XY);
return imageView;
}
Voici à quoi il ressemble:
Comme vous pouvez le voir, la Hauteur de la ImageView
est très bien, mais je veux que la Largeur de la il être le même. Je n'ai pas accès à mon image bitmap via mon activité, donc s'il vous plaît ne me demandez pas de redimensionner mon image bitmap. Je ne comprends vraiment pas pourquoi ça ne fonctionne pas comme il le devrait.
EDIT:
Juste pour rendre le problème plus compréhensible. Le ImageView
hauteur est calculée pour chaque appareil. Il est différent pour chaque appareil. Je veux que la largeur de mon ImageView
être la même que la hauteur comme il est. Je suis l'aide de la Two-WayGridView
bibliothèque pour afficher les images si cela fait une différence.
Si votre ImageView ont été 100x100, puis à l'aide fitXY serait de créer un 100x100 image sur l'écran. Comme il est, il semble que vous ayez une 100x200 la taille de l'ImageView, ou quelque chose de similaire.
Je m'attends à une image carrée, oui. Je veux que la taille de la largeur d'être la même que la hauteur.(Plus grand). La hauteur de mon imageview est mis à l'échelle automatiquement - c'est tout à fait bien. mais la Largeur, est trop faible. Je veux qu'il soit le même que ma hauteur. Comment puis-je le faire? même en programmant.
Votre mise en page est le réglage de l'imageview la largeur et la hauteur à la largeur et la hauteur de son parent. Puis fitxy est le montage de l'image à l'intérieur de cette zone. Si vous voulez l'imageView à 100 par 100, pourquoi ne pas vous suffit de le définir le xml de la hauteur et de la largeur des paramètres à 100dp au lieu de matchparent?
Je n'ai jamais dit que je veux que mon imageview à 100 par 100. J'ai dit que je suis enregistrer l'image sur 100 par 100. L'imageview hauteur est calculée pour chaque appareil. - Il différent pour chaque appareil. Je veux que la largeur de mon imageview, être la même que la hauteur comme il est.
OriginalL'auteur idish | 2013-07-27
Vous devez vous connecter pour publier un commentaire.
À l'aide de
scaleType
ne va pas changer la taille de votre ImageView, comme vous semblez le penser il se doit. Tout ce qu'il fait est à l'échelle de l'image bitmap jusqu'à la taille de l'ImageView(il s'en sort plutôt bien, à en juger par votre capture d'écran).Si vous voulez faire de la place ImageViews, vous devriez essayer de regarder cette question.
Aussi, je ne suis pas sûr de comprendre pourquoi vous êtes à l'aide de la TwoWayGridView de la bibliothèque. Il est conçu spécialement pour vous permettre d'indiquer le nombre de lignes/colonnes, et il étendra les éléments d'ajustement. Cela semble être l'exact opposé de ce que vous voulez, puisque vous voulez leur faire place. Normal GridView de travail, à condition de remplacer le
onMeasure()
de chaque élément, comme il le montre dans la quesion/réponse.BTW, je sais que la normale GridView va fonctionner, Mais je suis à la recherche d'un horizontale 🙂
Ah, à l'horizontale. A de sens pour une galerie. Eh bien, la meilleure façon de le faire c'est remplacer le
onMeasure
de chaque élément, comme je l'ai dit ci-dessus. C'est simple, seulement quelques lignes de code, et a travaillé pour moi dans le passé.En fait, j'ai déjà essayé, mais je vais lui donner une autre chance aujourd'hui 🙂
WOW, ça fonctionne, tout simplement. Je ne peux pas croire que!!! Si grand. J'ai juste eu à modifier le code de façon à ce que la hauteur sera la même et pas la largeur. 🙂 Vous êtes un grand sérieux. Je suis tellement heureux en ce moment. Je cherchais ce type de solution pour un long moment.
OriginalL'auteur Geobits
Je me demande ce conteneur widget que vous utilisez pour la tenue de l'ImageView.
par exemple... GridView, ListView, etc...
Si vous utilisez GridView, vous essayez de le nombre de la colonne par GridView.setNumColumns().
Si ne fonctionne toujours pas, vous essayez d'utiliser AspectRatioFrameLayout classe par l'une des nombreuses façon.
cette classe est très simple. suivez les étapes ci-dessous!
1. ajouter des attributs dans res/attrs.xml
2. créer AspectRatioFrameLayout classe
3. modifier list_item_image.xml
OriginalL'auteur Hogun
Au lieu d'utiliser la propriété src, en arrière-plan de la propriété de l'imageView. Bitmap sera étirée.
De l'OP commentaires: "je n'ai jamais dit que je veux que mon imageview à 100 par 100. J'ai dit que je suis enregistrer l'image sur 100 par 100. L'imageview hauteur est calculée pour chaque appareil. - Il différent pour chaque appareil."
au lieu d'utiliser "match_parent", vous devrez utiliser "wrap_content". Puis imageView taille sera fonction de votre bitmap, Et doivent également utiliser le fond de la propriété au lieu de la src.
OriginalL'auteur Ahmad Raza
Utiliser le fond avec fitxy au lieu de l'utilisation de la src. Il permet d'étirer votre image:
Arrière-plan avec fitxy au lieu de l'utilisation de la src. il permet d'étirer votre image.
OriginalL'auteur vivek Gaikwad