在动态创建的复选框上设置布局边距

4
我正在编写一个任务管理应用程序,它会从服务器下载任务和子任务列表,并为每个项目创建一个新的复选框并将其添加到线性布局(下面称为ll)。我遇到的问题是,我无法像在XML中那样使用java设置“布局左边距”(这是为了使子任务在屏幕上缩进一点)。我可以设置大多数其他xml属性,但cb.setMargins()不起作用(说未定义类型复选框)。当然,设置填充不会达到期望的结果。
for(int i=0;i<tasks.size();i++) {
CheckBox cb = new CheckBox(this);
cb.setText(tasks.get(i).subtask_desc);
cb.setButtonDrawable(R.drawable.checkbox_xml);
ll.addView(cb);
    }

有什么想法或者是我该如何处理这个问题呢?
2个回答

12

我认为你应该使用正确的LayoutParams将复选框添加到LinearLayout中:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.leftMargin = 123;
li.addView(cb, params);
希望能帮到你!

2
我已经看了那段代码100遍,但从未意识到如何正确使用它。我一直以为它创建了一个新的线性布局。这很完美地解决了问题,非常有帮助,谢谢。 - Satchmo

0

嗨,试试这个...

    private LinearLayyout ll = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    params.leftMargin = 123;;
    CheckBox cb;
    for(int i = 0; i < 10; i++) {
        cb = new CheckBox(this);
        cb.setText(categoryListArray[i]);
        ll.addView(cb, ll);
    }

这如何在动态创建的复选框上添加边距? - Oleksiy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接