在Array Adapter中获取ListView的宽度

时间:2014-06-10 13:04:25

标签: android listview

我有一个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.如何获得视图的宽度?或者这是不可能这样做的?

1 个答案:

答案 0 :(得分:8)

您可以通过调用parent.getWidth()获取listView的宽度。 parent是您的视图将附加到的视图。因此,您的视图将具有相同的大小。

view.getWidth()返回0,因为此时您的视图并未真正添加到ListView。