Java 如何在线性布局中消除视图之间的空间

Java 如何在线性布局中消除视图之间的空间,java,android,layout,space,android-linearlayout,Java,Android,Layout,Space,Android Linearlayout,我有一个水平滚动视图,其中包含一个水平线性布局。现在,我将同样大的ImageView添加到LinearLayout,以便可以在ImageView之间滚动。ImageView应该紧密地并排放置,中间没有空间,但是在每个图像的两侧都有一个巨大的空间(我认为它是图像宽度的一半) 下面是我是如何做到这一点的,我希望有人能给我一个提示 public class SnapGallery extends HorizontalScrollView { private ArrayList<Bitm

我有一个水平滚动视图,其中包含一个水平线性布局。现在,我将同样大的ImageView添加到LinearLayout,以便可以在ImageView之间滚动。ImageView应该紧密地并排放置,中间没有空间,但是在每个图像的两侧都有一个巨大的空间(我认为它是图像宽度的一半)

下面是我是如何做到这一点的,我希望有人能给我一个提示

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;        
    }
}
公共类SnapGallery扩展了HorizontalScrollView{
private ArrayList items=null;
受保护的上下文=null;//活动的上下文
protected LinearLayout wrapper=null;//它用作SnapGallery中图像的容器。
//建造师
公共快照库(上下文){
超级(上下文);
this.context=上下文;
items=newarraylist();
this.setLayoutParams(新的LayoutParams(LayoutParams.WRAP_内容,LayoutParams.WRAP_内容));
包装器=新的线性布局(上下文);
包装器。设置方向(线性布局。水平);
setLayoutParams(新的LayoutParams(LayoutParams.WRAP_内容,LayoutParams.WRAP_内容));
setPadding(0,0,0,0);
wrapper.setGravity(Gravity.LEFT);
这个.addView(包装器);
items=getTestBitmaps();
用于(位图b:项目){
ImageView curr=createViewFromBitmap(b);
addView(curr,newlinearlayout.LayoutParams(0,LayoutParams.MATCH_PARENT,1.0f));
}
}
公共图像视图createViewFromBitmap(位图位图){
ImageView=新的ImageView(上下文);
view.setScaleType(ImageView.ScaleType.CENTER_内);
设置填充(0,0,0,0);
view.setImageBitmap(位图);
返回视图;
}
}

提前谢谢

可能需要将边距设置为0。大概是这样的:

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

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

您是否已检查/设置边距为0以及填充?谢谢您的帖子,但这不起作用。就像以前一样。我看到您还有其他几个
LinearLayout.LayoutParams
对象。你都试过了吗?特别是在
wrapper.addView()
行中的一个。是的,但不幸的是没有真正的变化。