J'essaie d'implémenter un ImageView avec des images de paysage ou de portrait. Ces images doivent correspondre à la largeur de l'image (si paysage) ou de la hauteur (si portrait) mais dans tous les cas, elles doivent être alignées en haut de la vue sans marge ni marge. Ce que je voudrais réaliser est quelque chose comme android:scaleType="fitStart"
centré dans le cas d'images de portrait ou alignés sur le dessus en cas d'images de paysage.Android ImageView ScaleType * FIT_TOP *
Ajouté:
Maintenant, je me sers comme un code laid, ce qui semble fonctionner, mais pas sûr qu'il est la meilleure solution:
<com.custom.layout.MyImageView
android:id="@+id/detail_view_image"
android:src="@drawable/logo"
android:background="#fff"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:cropToPadding="false"
android:adjustViewBounds="false"
/>
puis dans ma classe, qui s'étend ImageView i faire:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int imgWidth = getDrawable().getIntrinsicWidth();
int imgHeight = getDrawable().getIntrinsicHeight();
if(imgWidth>imgHeight)
setScaleType(ScaleType.FIT_START);
else
setScaleType(ScaleType.FIT_CENTER);
int width = measureWidth(widthMeasureSpec);
int height = measureHeight(heightMeasureSpec);
setMeasuredDimension(width, height);
}
Je cherche à faire quelque chose de similaire, avez-vous déjà trouvé une solution pour cela? –
pas de chance jusqu'à présent, j'ai fini par utiliser le code que j'ai posté ci-dessus ... – 0m4r
ok, merci pour le code! –