【问题标题】:How to get rid of space between Views in LinearLayout如何摆脱LinearLayout中视图之间的空间
【发布时间】:2011-08-26 10:52:39
【问题描述】:

我有一个包含水平 LinearLayout 的 Horizo​​ntalScrollView。现在我将同样大的 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;        
    }
}

提前致谢!

【问题讨论】:

  • 您是否检查过/将边距设置为 0 以及填充?

标签: java android layout space android-linearlayout


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    可能需要将边距设置为 0。像这样:

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

    【讨论】:

    • 感谢您的帖子,但这没有用。和以前一样。
    • 我看到您还有其他几个 LinearLayout.LayoutParams 对象。你都试过了吗?特别是在wrapper.addView() 行。
    • 是的,但遗憾的是没有真正的变化。
    最近更新 更多