在动态创建的复选框上设置layoutmargin

在动态创建的复选框上设置layoutmargin

问题描述:

我正在编写一个任务管理器应用程序,它从服务器下载任务和子任务列表,并为每个项目创建一个新复选框并将其添加到线性布局(以下称为ll) 。我遇到的问题是,我无法像使用XML一样使用java来设置“layout left margin”(这是为了使子任务在屏幕上缩进一点)。我可以设置大多数其他XML属性,但cb.setMargins()不起作用(说未定义类型复选框)。设置填充当然不会达到预期的效果。在动态创建的复选框上设置layoutmargin

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); 
    } 

任何想法或我将如何工作?

我想你应该使用正确的LayoutParams的复选框添加到的LinearLayout:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
params.leftMargin = 123; 
li.addView(cb, params); 

希望帮助!

+1

我见过的代码100倍只是从来没有意识到如何正确地使用它。我一直认为创建了一个新的线性布局。这工作完美,非常有帮助,谢谢。 – Satchmo 2010-10-30 14:56:42

嗨尝试......

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); 
    } 
+0

这是如何在动态创建的复选框上添加边距的? – Oleksiy 2014-06-20 19:24:44