8

ImageView var ve layout_height "100dp" ve onun layout_width değerini "wrap_content" olarak ayarladı.ImageView ayarlamakBağlantı Düzeni ile çalışmaViewView'lar

Kullanılabilir çekmece, 130dp (genişlik) X 215dp (yükseklik) olan daha büyük gerçek boyutlara sahiptir. True adjustViewBounds ayarlanmış ise ImageView, bir LinearLayout içine yerleştirilir

, bu çekilebilir en-boy oranına ve layout_width göre ölçülür bir genişliğe alır. Ancak, RelativeLayout'un içine yerleştirildiğinde, ImageView, adjustViewBounds ayarlarından bağımsız olarak, çekilebilir (130dp) ile aynı genişliğe sahip olur.

Her iki durumda da, görüntü bozulma olmaksızın doğruluk sağlar, ancak ImageView'ın sınırları farklıdır.

RelativeLayout:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/background_light"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="100dp" 
     android:adjustViewBounds="true" 
     android:src="@drawable/phone_orange" 
     android:contentDescription="@null" /> 

</RelativeLayout> 

ImageView in Relative Layout

LinearLayout:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/background_light" 
    android:orientation="vertical" > 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="100dp" 
     android:adjustViewBounds="true" 
     android:contentDescription="@null" 
     android:src="@drawable/phone_orange" /> 

</LinearLayout> 

ImageView in LinearLayout

Neden farklı bu 2 senaryolarda ImageView tedbirler nedir? ImageView'u her zaman LinearLayout durumunda olmak gibi davranmanın bir yolu var mı (LinearLayout işleriyle sarmak, ancak temiz bir çözüm değil)?

cevap

12
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:maxHeight="100dp" 
android:adjustViewBounds="true" 

I got it there

+0

match_parent için. – Petrakeas

+0

@Petrakeas Yanıtı güncelledim, uygulamamda denedim, iyi çalışıyor –

+0

'android: maxHeight' hile yapmak gibi görünüyor! Ama neden gerekli? LinearLayout içinde her şey beklendiği gibi çalışır. RelativeLayout'un davranışı doğru mu? – Petrakeas

0

kullanım genişliği ve ImageView yüksekliği görüntü tamamen bu konuda ortadan

private void addView(Drawable d) { 
    RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.MATCH_PARENT,  RelativeLayout.LayoutParams.MATCH_PARENT); 
    ImageView iv = new ImageView(this); 
    iv.setImageDrawable(d); 
    iv.setAdjustViewBounds(true); 
    iv.setScaleType(ImageView.ScaleType.MATRIX); 
    iv.setLayoutParams(lparams); 
    rl.addView(iv); 
    iv.setOnTouchListener(this); 
}