0

我有一个空白的线性列表,我有一个将动态加载的图像列表(来自 url,工作)。

我需要在网格中显示图像(例如当您访问 facebook 照片库时)。

由于明显的原因,我不能使用 XML,我的图像显示只是它们彼此重叠并且非常小。

也可以轻松地将它们设置为屏幕大小的百分比吗?(所以列表在所有设备上看起来都一样)

这是到目前为止的代码:

private void Display()
{
    Toast toast = Toast.makeText(getApplicationContext(), "Downloading Photos", Toast.LENGTH_SHORT);
    toast.show();

    //Get width of the image.
    int imageWidth = (int)getWindowManager().getDefaultDisplay().getWidth() / 3;
    LayoutParams gp = new GridView.LayoutParams(GridView.LayoutParams.FILL_PARENT, (int)imageWidth);

    //Placeholders
    for(int _i = 0; _i < _noOfPhotos; _i++)
    {
        ImageView imageView = new ImageView(getApplicationContext());

        imageView.setImageResource(R.drawable.no_image);
        imageView.setLayoutParams(gp);

        _imageViewArray.add(imageView);
        this.addContentView(_imageViewArray.get(_i), gp);
    }

    //Set URL

    //UrlImageViewHelper.setUrlDrawable(imageView, _userGallery.get(_i).getPicture());
}
4

1 回答 1

1

使用GridView,这正是这个用例。

<GridView 
    android:id="@+id/content"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginTop="20dip"
    android:layout_marginBottom="20dip"
    android:numColumns="3" />

你可以得到每个 ImageView 的宽度

float width = getWindowManager().getDefaultDisplay().getWidth() / 3;
mLayoutParams = new GridView.LayoutParams(
            GridView.LayoutParams.FILL_PARENT, 
            (int)width); // set the width as height for quadratic images

然后,在 GridView 的 ListAdapter

public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(context); // need to check convertView
    imageView.setImageResource(mImages.get(position));
    imageView.setLayoutParams(mLayoutParams);

    return imageView;
}
于 2012-07-13T19:37:25.417 回答