我有一个ListView,如果它是横向平板电脑,它将是全屏宽度(手机)或宽度的大约1/3。在列表中,它将显示远程服务器上的图像。
显然,图像可能需要一些时间来下载图像,因此,在JSON数据中,我将图像的平均颜色设置为十六进制,以及图像的比例。我想要的是,在适配器中,用正确大小的平均颜色填充图像。我使用此代码
将颜色部分缩小了final ColorDrawable cd = new ColorDrawable(Color.parseColor(blog.getAverageColor()));
Picasso.with(getContext()).load(blog.getFullPath()).placeholder(cd).into(img);
但是,我无法使用这个尺寸。我最初的想法是在视图上调用 getWidth(),然后通过 blog.getRatio()对其进行计时,然后将图像高度设置为该值,并将其设置为' s宽度到视图的宽度。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = getLayoutInflater(null).inflate(r, parent, false);
}
if (view == null) {
return null;
}
int width = view.getWidth();
但是,宽度始终为0.如何获得视图的宽度?或者这是不可能这样做的?
答案 0 :(得分:8)
您可以通过调用parent.getWidth()
获取listView的宽度。 parent
是您的视图将附加到的视图。因此,您的视图将具有相同的大小。
view.getWidth()
返回0,因为此时您的视图并未真正添加到ListView。