我试图将imageview的高度和宽度设置为屏幕的宽度(Square)。 imageview位于列表视图中。我尝试在baseadapter的getview方法中设置高度和宽度。发生的事情是滚动变得非常慢。所以我试图做的是通过扩展ImageView类来编写我自己的imageview,这样它将被绘制到正确的大小,所以我不需要在getview方法中更改它。这仍然没有改变任何事情。滚动仍然很慢。如何设置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 :(得分: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()中实例化新的视图。
如果它仍然很慢,我需要看看你的适配器(请同时提一下你的图像的二进制大小)。另外请看我的例子,它甚至超快速地将图像拉过电线并重新调整/调整尺寸。