Как избавиться от пробела между представлениями в LinearLayout - PullRequest
0 голосов
/ 26 августа 2011

У меня есть HorizontalScrollView, который содержит горизонтальный LinearLayout.Теперь я добавляю одинаково большие ImageViews в LinearLayout, чтобы я мог перемещаться между ImageViews.ImageViews должны плотно лежать бок о бок, без промежутков между ними, но с обеих сторон каждого изображения образуется огромное пространство (я думаю, что половина его ширины изображений)Надеюсь, у кого-то есть совет для меня.

public class SnapGallery extends HorizontalScrollView {

    private ArrayList<Bitmap> items = null; 

    protected Context context = null; //Context of the activity
    protected LinearLayout wrapper = null; //This serves as a container for the images in the SnapGallery.

    //Constructor
    public SnapGallery(Context context) {
        super(context);

        this.context = context;
        items = new ArrayList<Bitmap> ();

        this.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

        wrapper = new LinearLayout(context);
        wrapper.setOrientation(LinearLayout.HORIZONTAL);
        wrapper.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

        wrapper.setPadding(0, 0, 0, 0);
        wrapper.setGravity(Gravity.LEFT);

        this.addView(wrapper);

        items = getTestBitmaps();

        for (Bitmap b : items) {
            ImageView curr = createViewFromBitmap(b);
            wrapper.addView(curr, new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1.0f));
        }

    }

    public ImageView createViewFromBitmap (Bitmap bitmap) {

        ImageView view = new ImageView(context);
        view.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        view.setPadding(0, 0, 0, 0);
        view.setImageBitmap(bitmap);
        return view;        
    }
}

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 27 августа 2011

Ваши изображения масштабируются, поэтому вам необходимо вызвать AdjustViewBounds (true) для ваших объектов изображения, чтобы удалить свободное горизонтальное пространство.

0 голосов
/ 26 августа 2011

Вероятно, нужно установить поля равными 0. Как-то так:

LinearLayout.LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(0, 0, 0, 0);
wrapper.setLayoutParams(params);
...