J'ai une image que j'ai créée dans une dimension plus grande que la façon dont elle sera probablement affichée. Disons que c'est 200x200. Je suis en train de tester sur un appareil qui est 800x480 en mode paysage. Mon objectif est de redimensionner cette image au 1/4 de la hauteur de la vue actuelle, de la placer dans le coin supérieur droit et de conserver les proportions. Cela signifierait que lorsque vous regardez à 800x480, mon image serait dans le coin supérieur droit affichant 120x120. Je pensais que la façon d'y parvenir était d'utiliser un LinearLayout vertical avec un weightSum et layout_weights parmi les éléments (en utilisant des éléments vides avec layout_weight pour le rembourrage si nécessaire) et adjustViewBounds = true sur l'ImageView, mais je ne suis pas capable pour obtenir l'effet que je veux. Des idées?Mise en page Android, redimensionner par pourcentage et maintenir la proportion
Répondre
Vous ne devriez même pas avoir à vous soucier de weightSum ou adjustViewBounds, je ne pense pas. Vous devriez être sur la bonne voie, cependant. Essayez cette mise en page (non testé), et voir si elle obtient le résultat:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<ImageView
android:id="@+id/qtr_img"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/your_image"
android:scaleType="fitCenter"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
/>
<View
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="3"
/>
</LinearLayout>
Cela met juste une vue vide sous l'image, pondérée pour prendre 3/4 de l'écran, tandis que le ImageView prend le 1/4 restant. Vous pouvez également utiliser layout_gravity="right|top"
au lieu de alignParentTop
et alignParentRight
, mais je préfère juste de cette façon. Laissez-moi savoir si cela fonctionne.
et maintenant il est comment si vous allez, par exemple, créer un formulaire et qu'il prend en charge l'application sur un téléphone qui a une résolution différente de celle de l'émulateur (les étiquettes ne sont pas alignées). Est-il possible de standardiser la résolution, utilisez "%" comme unité de mesure au lieu de px, ...?
Ceci est vraiment proche, et produit le même résultat que mes précédents essais et erreurs, mais la seule chose que je reçois toujours est que ImageView rend compte à la mise en page parente dont il a besoin horizontal espace égal aux dimensions d'origine. Donc, mon image est redimensionnée mais elle est mal positionnée. La solution consistait à définir scaleType sur fitEnd, mais le conteneur de disposition n'avait toujours pas la bonne largeur. En ce moment, cela n'a aucune conséquence, alors je pourrais être tout bon. Merci. – Rich
Hmm, d'accord, je peux voir comment ça se passerait. En fait, je pense qu'une solution Java codée pourrait bien fonctionner mieux pour ce que vous essayez de faire. Cependant, si le conteneur ayant la mauvaise largeur n'est pas un problème, essayez d'ajouter un attribut supplémentaire à votre ImageView: 'android: gravity =" top | right "'. – kcoppock
Également, la pensée rapide (et je pourrais être horriblement hors de base), l'ordre des attributs importe-t-il en gonflant un document XML? Je me demande si peut-être placer l'attribut scaleType avant les attributs layout_width et layout_height pourrait affecter les mesures? – kcoppock