0

是的,这是一个我一直在玩弄的奇怪问题,希望也许我错过了一些你们可以引起我注意的东西!

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

有人有任何线索吗?

4

1 回答 1

0

我尝试用 XML 构建它,它工作正常。一个可能的区别是,您没有LayoutParams为按钮设置任何内容。为每个按钮尝试类似的操作:

cat1Btn = new CatButton(context,this,act,"CAT1");
catBtns.addView(cat1Btn, new LinearLayout.LayoutParams(0,0));
于 2013-01-10T11:56:01.487 回答