2016-03-25 3 views
0

enter image description here Url image, имеющее ширину 900 * 346, мы используем одно и то же изображение для отображения детального изображения и уменьшенного изображения. Изображение в эскизе отображается в Gridview с двумя столбцами и высотой 200dp, но изображение растягивается. Там есть способ отображения изображения большей ширины без растягивания. Заранее спасибо.увеличенная ширина изображение в уменьшенное изображение

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 Адаптер 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

Пожалуйста, разместите свой xml-файл и снимок экрана. –

+0

@ Ravikumar11 посмотри мой ответ. –

ответ

0

Если я не неправильно, вы хотите сохранить соотношение ширины/высоты изображения, растягивая изображение. Вы можете поместить следующие строки в XML ImageView:

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

Вы можете играть с scaleType, чтобы получить желаемое изображение. Если вы используете устройство ниже API 17, вы можете пользовательских ImageView:

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

Я добавил две строки, но не работал. – Ravikumar11

+0

@ Ravikumar11 Я отредактировал ответ, вы можете использовать пользовательский вид с 2 строками выше. –

+0

Спасибо, позвольте мне попробовать – Ravikumar11

0

Дайте в XML-файле Вашего макета android:scaleType="fitXY" PS: это относится к тому, когда изображение устанавливается android:src="..." а чем android:background="...", поскольку фоны устанавливаются по умолчанию для растягивания и соответствия виду.

Смежные вопросы