2016-03-25 27 views
0

enter image description here Genişlik 900 * 346 olan görüntülerde, görüntü ve küçük resim görüntüsünü görüntülemek için aynı görüntüyü kullanıyoruz.Üstün görüntü Gridview'de 2 sütun ve 200dp yüksekliğinde görüntü veriyor ancak görüntü uzuyor. daha geniş genişlikli görüntüyü dışarı uzatmak için bir yol. Şimdiden teşekkürler.büyük genişlik küçük resmi

GridView Xml:

<?xml version="1.0" encoding="utf-8"?> 
<GridView 
    android:id="@+id/grid_img" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:horizontalSpacing="@dimen/portfolio_grid_space" 
    android:verticalSpacing="@dimen/portfolio_grid_space" 
    android:layout_marginTop="@dimen/portfolio_grid_space" 
    android:layout_marginBottom="@dimen/portfolio_grid_space" 
    android:numColumns="2"/> 

Gridview Adaptör xml:

<?xml version="1.0" encoding="utf-8"?> 
<ImageView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/img" 
    android:scaleType="fitCenter" 
    android:layout_width="match_parent" android:layout_height="200dp"> 

</ImageView> 
+0

Lütfen xml dosyanızı ve ekran görüntüsünü gönderin. –

+0

@ Ravikumar11 cevabıma bak. –

cevap

0

yanlış anlıyorum yoksa, görüntüyü gererken görüntü genişlik/yükseklik oranını tutmak istiyorum. Eğer xml ImageView aşağıda çizgileri koyabilirsiniz:

android:adjustViewBounds="true" 
android:scaleType="centerCrop" 

İstediğiniz resmi almak için scaleType etrafında oynayabilir. API 17 altında cihaz kullanıyorsanız IF, özel ImageView can: Bu resim yerine android:src="..." ile ayarlandığında için geçerlidir:

public class ScaleAspectFillImageView extends ImageView { 

public ScaleAspectFillImageView(Context context) { 
    super(context); 
} 

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

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

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    // If API level <= 17, 
    // Only need custom measurement for image whose size is smaller than imageView size. 
    // http://developer.android.com/reference/android/widget/ImageView.html#setAdjustViewBounds(boolean) 
    if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
     float viewWidth = MeasureSpec.getSize(widthMeasureSpec); 
     float viewHeight = MeasureSpec.getSize(heightMeasureSpec); 
     // Calculate imageView.height based on imageView.width and drawable aspect ratio using scale-aspect-fill mode. 
     Drawable drawable = getDrawable(); 
     if (drawable != null) { 
      float drawableWidth = drawable.getIntrinsicWidth(); 
      float drawableHeight = drawable.getIntrinsicHeight(); 
      // Only need custom measurement for image whose size is smaller than imageView size. 
      // Avoid divide by zero error. 
      boolean needCustomMeasurement = drawableWidth < viewWidth || drawableHeight < viewHeight; 
      if (needCustomMeasurement && drawableHeight > 0) { 
       float drawableAspectRatio = drawableWidth/drawableHeight; 
       // imageView.width and drawable aspect ratio must be greater than zero. 
       if (drawableAspectRatio > 0 && viewWidth > 0) { 
        float targetHeight = viewWidth/drawableAspectRatio; 
        setMeasuredDimension((int) viewWidth, (int) targetHeight); 
        return; // Already set the measured dimension. 
       } 
      } 
     } 
    } 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
} 

}

+0

İki satır ekledim ancak çalışmıyor. – Ravikumar11

+0

@ Ravikumar11 Cevabı düzenledim, 2 satırlık özel görünümü kullanabilirsiniz. –

+0

Teşekkür ederim, deneyeyim – Ravikumar11

0

düzeninizin android:scaleType="fitXY" PS xml dosyasında ver android:background="..."'dan farklı olarak, arka planlar varsayılan olarak Görünüm'e sığacak ve sığacak şekilde ayarlanır.

İlgili konular