2016-03-25 13 views
0

enter image description here Url Bild mit der Breite 900 * 346, verwenden wir dasselbe Bild für die Anzeige von Detailbild und Thumbnail.Humbnail Bild wird in Gridview mit 2 Spalten und 200dp Höhe angezeigt, aber das Bild ist stretching.Is gibt es keine Möglichkeit, ein Bild mit größerer Breite ohne Ausdehnung anzuzeigen. Danke im Voraus.Größeres Bild zum Thumbnail

Grid 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 Adapter 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

Bitte posten Sie Ihre XML-Datei und Screenshot. –

+0

@ Ravikumar11 schau meine Antwort. –

Antwort

0

Wenn ich nicht falsch verstehen, wollen Sie Bild Breiten-/Höhenverhältnis zu halten, während das Bild Stretching. Sie können die folgenden Zeilen in der xml setzen ImageView:

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

Sie können mit scaleType spielen, um auf die gewünschte Bild zu erhalten. WENN Sie API-Gerät unter 17 verwenden, können Sie benutzerdefinierte 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

Ich habe zwei Zeilen hinzugefügt, funktioniert aber nicht. – Ravikumar11

+0

@ Ravikumar11 Ich habe die Antwort bearbeitet, können Sie die benutzerdefinierte Ansicht mit 2 Zeilen oben verwenden. –

+0

Danke, lass mich es versuchen – Ravikumar11

0

in der XML-Datei des Layouts android:scaleType="fitXY" PS geben: dies gilt, wenn das Bild mit android:src="..." gesetzt ist eher als android:background="..." als Hintergrund sind standardmäßig festgelegt, um zu strecken und an die Ansicht anzupassen.

Verwandte Themen