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 に答える