Android:LinearLayout因使用权重的间距而消失?

Android:LinearLayout因使用权重的间距而消失?,android,android-linearlayout,Android,Android Linearlayout,对,这是一个奇怪的问题,我已经玩了一段时间了,希望我错过了一些你们可以引起我注意的东西 LinearLayouts一旦我使用视图添加任何间距并定义权重(该方法适用于项目中的其他地方),似乎就会消失 我有一个自定义对话框(扩展对话框)。在onCreate()中,我使用方法setContentView(generateDialog()),该方法返回垂直线性布局 LinearLayout有三个元素,一行四个自定义类别按钮(LinearLayouts)、一行排序按钮(也叫LinearLayouts)和一

对,这是一个奇怪的问题,我已经玩了一段时间了,希望我错过了一些你们可以引起我注意的东西

LinearLayouts
一旦我使用视图添加任何间距并定义权重(该方法适用于项目中的其他地方),似乎就会消失

我有一个
自定义对话框
(扩展对话框)。在
onCreate()
中,我使用方法
setContentView(generateDialog())
,该方法返回垂直线性布局

LinearLayout有三个元素,一行四个自定义类别按钮(LinearLayouts)、一行排序按钮(也叫LinearLayouts)和一个列表视图,该列表视图填充对话框的其余部分,并根据按下的按钮进行刷新

所有功能正常,工作正常。除非我尝试使用间隔方法将按钮均匀隔开:

Dialog.java

LinearLayout catBtns = new LinearLayout(context);
        catBtns.setOrientation(LinearLayout.HORIZONTAL);
        catBtns.setBackgroundResource(R.drawable.btn_cat_gradient_bg);
        catBtns.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));

        catBtns.addView(space(1));
        cat1Btn = new CatButton(context,this,act,"CAT1");
        catBtns.addView(cat1Btn);
        catBtns.addView(space(1));
        cat2Btn = new CatButton(context,this,act,"CAT2");
        catBtns.addView(cat2Btn);
        catBtns.addView(space(1));
        cat3Btn= new CatButton(context,this,act,"CAT3");
        catBtns.addView(cat3Btn);
        catBtns.addView(space(1));
        cat4Btn = new CatButton(context,this,act,"CAT4");
        catBtns.addView(cat4Btn);
        catBtns.addView(space(1));
space()方法:

private View space(int space) {
    View view = new View(context);
    LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(0,0);
    p.weight = space;
    view.setLayoutParams(p);
    return view;
}
让我困惑的是,在整个项目中,我一直在使用这种方法,当我在每个按钮之间添加间隔符时,无法找到为什么类别LinearLayout完全消失

我对排序按钮使用了相同的技术,而且效果非常好!我在项目的另一部分中使用了相同的技术,使用了相同按钮的不同版本(尽管它们是不同的类文件,因为onClickListener和其他一些东西略有不同)


有人有任何线索吗?

我尝试用XML构建它,效果很好。一个可能的区别是,您没有为按钮设置任何
LayoutParams
。为每个按钮尝试类似的操作:

cat1Btn = new CatButton(context,this,act,"CAT1");
catBtns.addView(cat1Btn, new LinearLayout.LayoutParams(0,0));

在button类中,我将LayoutParams设置为:LinearLayout.LayoutParams btnLayoutParams=newlinearLayout.LayoutParams(LayoutParams.WRAP\u CONTENT,LayoutParams.MATCH\u PARENT);this.setLayoutParams(btnLayoutParams);但我也试了你的建议,恐怕不行。奇怪的间歇性问题!我找到了解决办法!间接感谢Ridicully真的。我在我的CatButton类中注释掉了前面提到的LayoutParams的赋值,它似乎已经修复了它!尽管由于某种原因,这正是我在另一个类中使用的方法,但这个类不喜欢使用LayoutParams。谢谢你的帮助