Android:LinearLayout因重量间距而消失?

时间:2013-01-10 11:41:01

标签: android android-linearlayout

是的,这是一个奇怪的问题,我已经玩了一段时间了,希望也许我错过了一些你们可以引起我注意的事情!

一旦我使用视图添加任何间距并定义权重(在项目中其他位置工作的方法),

LinearLayouts似乎正在消失。

我有custom Dialog(扩展对话框)。在onCreate()中,我使用返回垂直LinearLayout的方法setContentView(generateDialog())

LinearLayout有三个元素,一行四个自定义类别按钮(LinearLayouts),一行排序按钮(也是LinearLayouts)和一个ListView,它填充对话框的其余部分并根据按下哪个按钮刷新。

一切都很实用,工作正常。除非我尝试使用我的spacer方法将按钮均匀分开:

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和其他一些东西略有不同)

任何人都有任何线索?

1 个答案:

答案 0 :(得分:0)

我尝试用XML构建它,它运行正常。可能的区别是,您没有为按钮设置任何LayoutParams。为每个按钮尝试类似的东西:

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