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。谢谢你的帮助