Android görüntü görünümü maxWidth'e saygı göstermiyor mu?


113

Bu yüzden, internetten indirilen bir profil resmi olan rastgele bir resmi göstermesi gereken bir görüntü görünümüm var. Bunun ImageView görüntüsünü ana kapsayıcının yüksekliğine ve maksimum 60dip genişliğe sığacak şekilde ölçeklemesini istiyorum. Ancak, görüntü yüksek oranlıysa ve tam 60dip genişliğe ihtiyaç duymuyorsa, görüntünün arka planının görüntünün etrafına tam oturması için ImageView'un genişliği azalmalıdır.

Bunu denedim

<ImageView android:id="@+id/menu_profile_picture"
    android:layout_width="wrap_content"
    android:maxWidth="60dip"
    android:layout_height="fill_parent"
    android:layout_marginLeft="2dip"
    android:padding="4dip"
    android:scaleType="centerInside"
    android:background="@drawable/menubar_button"
    android:layout_centerVertical="true"/>

ama bu, ImageView'ü bazı nedenlerden dolayı çok büyük yaptı, belki de onu ayarlamak için görüntünün içsel genişliğini ve wrap_content'i kullandı - her neyse, benim maxWidth özelliğime saygı göstermedi .. Bu sadece bazı konteyner türlerinde mi çalışıyor? Doğrusal Düzende ...

Baska öneri?

Yanıtlar:


302

Ah,

android:adjustViewBounds="true"

maxWidth'in çalışması için gereklidir.

Şimdi çalışıyor!


paylaşım için teşekkürler, cevabınızı doğru olarak işaretler misiniz lütfen !?
WarrenFaith

1
Çok teşekkürler .. Benim için iyi çalıştı :)
Nirav Dangi

7
ve programlı olarak: imageView.setAdjustViewBounds (true);
Cyril Jacquart

7
Bu bulguyla karşılaşan herkes için işe yaramaz, genişlik / yüksekliğin match_parent olarak ayarlanmadığından emin olun.
Kevin Worth

Ve burada, sözde bu sınırlara uymak için yaratılan AOSP'nin özel dahili ImageView'unu çalıyorum.
TheWanderer

4

Kullanırsanız ayar adjustViewBoundsyardımcı olmaz match_parent, ancak geçici çözüm özeldir ImageView:


public class LimitedWidthImageView extends ImageView {
    public LimitedWidthImageView(Context context) {
        super(context);
    }

    public LimitedWidthImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public LimitedWidthImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int specWidth = MeasureSpec.getSize(widthMeasureSpec);
        int maxWidth = getMaxWidth();
        if (specWidth > maxWidth) {
            widthMeasureSpec = MeasureSpec.makeMeasureSpec(maxWidth,
                    MeasureSpec.getMode(widthMeasureSpec));
        }
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
}

1
AdjustViewBounds benim için match_parent genişliğiyle iyi çalışıyor gibi görünüyor.
Cory Petosky
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.