2014-04-29 71 views
0

我試圖設置一個ImageView的高度和寬度的屏幕(Square)的寬度。 imageview是在一個列表視圖。我試圖在我的baseadapter的getview方法中設置高度和寬度。發生了什麼事是滾動變得非常緩慢。所以我試圖做的是通過擴展ImageView類來編寫自己的imageview,以便將其繪製到合適的大小,所以我不需要在getview方法中更改它。這仍然不會改變任何事情。滾動仍然非常緩慢。我如何設置imageview的寬度和高度以匹配屏幕寬度?自定義ImageView爲正方形

 public class ScaledImageView extends ImageView{ 

public ScaledImageView(Context context) { 
    super(context); 
    // TODO Auto-generated constructor stub 
} 

public ScaledImageView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    // TODO Auto-generated constructor stub 
} 

public ScaledImageView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    // TODO Auto-generated constructor stub 
} 


     @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 

    // int width = getMeasuredWidth(); 



    setMeasuredDimension(resolveSize(this.getMeasuredWidth(), widthMeasureSpec),  resolveSize(this.getMeasuredWidth(), widthMeasureSpec)); 

} 

}

+0

您可以嘗試使用ImageView動態設置視圖大小image.setScaleType(ScaleType.FIT_XY);將其縮放到屏幕上。 – zgc7009

回答

0
@Override 
protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) 
{ 
    final int width = getDefaultSize(getSuggestedMinimumWidth(),widthMeasureSpec); 
    if(width>this.squareWidth) 
    { 
     this.squareWidth = width; 
    } 
    setMeasuredDimension(this.squareWidth, this.squareWidth); 
} 

看到here我的完整的例子。

你也可以看看我的適配器,看看我如何實現這種性能。我猜你可能也會在你的getView()中實例化新的視圖。

如果它仍然很慢,我需要看看你的適配器(請同時提及你的圖像的二進制大小)。同樣請看我的例子,它甚至可以超級快速地拉動圖像並重新制作/調整大小。

+0

@ frederick_c_siu - 它仍然很慢。 – Samantha