是的,这是一个我一直在玩弄的奇怪问题,希望也许我错过了一些你们可以引起我注意的东西!
LinearLayouts
一旦我使用视图添加任何间距并定义权重(一种在项目其他地方工作的方法),似乎正在消失。
我有一个custom Dialog
(扩展对话框)。在onCreate()
我使用setContentView(generateDialog())
返回垂直线性布局的方法。
LinearLayout 包含三个元素,一行四个自定义类别按钮(LinearLayouts),一排排序按钮(也是 LinearLayouts)和一个 ListView,它填充对话框的其余部分并根据按下的按钮进行刷新。
一切正常,工作正常。除非我尝试使用我的 spacer 方法将按钮均匀地隔开:
对话框.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));
空间()方法:
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 和其他一些东西略有不同)
有人有任何线索吗?