如何摆脱LinearLayout中视图之间的空间

时间:2011-08-26 10:52:40

标签: java android layout space android-linearlayout

我有一个包含水平LinearLayout的Horizo​​ntalScrollView。现在我将同样大的ImageView添加到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 :(得分:0)

可能需要将边距设置为0.这样的事情:

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

答案 1 :(得分:0)

您的图像已缩放,因此您需要在图像对象上调用adjustViewBounds(true)以移除自由水平空间。