【发布时间】:2013-05-29 21:49:22
【问题描述】:
我有一个ListView 的适配器是ImageViews 的列表。我正在使用拉伸使图像填充图像视图,这样我就可以拍摄较小的图像并在屏幕上放大它们,但是ImageView 通常只使用wrap_content,这是一个问题,因为图像只是显示为它们正常的宽度和高度。有什么方法可以在绘制视图之前设置视图的高度和宽度,因为在这种情况下,在绘制视图之后我无法控制视图。这是我的另一种方法:
@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;
}
【问题讨论】:
-
使用 setLayoutParams。见stackoverflow.com/a/2965807/112381。
标签: android android-listview android-imageview