Android 在ListView适配器中绘制之前设置ImageView宽度和高度

Android 在ListView适配器中绘制之前设置ImageView宽度和高度,android,android-listview,android-imageview,Android,Android Listview,Android Imageview,我有一个到列表视图的适配器是图像视图的列表s。我正在使用拉伸将图像填充到imageview中,这样我可以拍摄较小的图像并在屏幕上放大,但是imageview通常只使用wrap\u内容,这是一个问题,因为图像仅显示为其正常宽度和高度。是否有任何方法可以在绘制视图之前设置视图的高度和宽度,因为在本例中,在绘制视图之后,我无法控制视图。以下是我的aapter方法: @Override public View getView(int position, View convertView, ViewG

我有一个到
列表视图的适配器
图像视图的列表
s。我正在使用拉伸将图像填充到imageview中,这样我可以拍摄较小的图像并在屏幕上放大,但是
imageview
通常只使用
wrap\u内容
,这是一个问题,因为图像仅显示为其正常宽度和高度。是否有任何方法可以在绘制视图之前设置视图的高度和宽度,因为在本例中,在绘制视图之后,我无法控制视图。以下是我的aapter方法:

  @Override
public View getView(int position, View convertView, ViewGroup parent) {
    String currentImage  = getItem(position);
    ScaleType scaleType = ScaleType.FIT_CENTER;
    float screenWidth = parent.getResources().getDisplayMetrics().widthPixels;

    if (convertView == null) {
        convertView = new ImageView(parent.getContext()); 
    }
  //         WHAT I WOULD LIKE TO BE ABLE TO DO, but this returns null pointer exception
 //     convertView.getLayoutParams().width = (int) screenWidth;
//      convertView.getLayoutParams().height = (int) ((float)(screenWidth/currentImage.getWidth())*currentImage.getHeight());

    ((ImageView) convertView).setScaleType(scaleType);
    ((ImageView) convertView).setImageBitmap(MainActivity.cache.getBitmap(currentImage));
    return convertView;
}

someView.setHeight()和someView.setWidth()这样的东西怎么样?或者
someView.setLayoutParams()
?您可以将其中任何一个添加到重写的
getView()
回调中,它应该会解决您的问题

您还可以创建和重写getMeasuredWidthAndState()之类的内容。(我认为这是正确的方法之一,但我不是百分之百确定。)您可以创建一个
width
类变量和一个
height
类变量,自定义ImageView的所有实例都将使用该变量。但是,如果您只想设置布局的宽度和高度,这可能有点过分。

使用setLayoutParams。看见