没有图像适配器的Android Gridview

时间:2012-07-13 19:13:08

标签: android facebook android-layout android-intent android-listview

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

我需要在网格中显示图像(例如,当您访问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());
}

1 个答案:

答案 0 :(得分: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;
}