Установите layoutmargin для динамически созданного флажка

Я пишу приложение диспетчера задач, которое загружает список задач и подзадач с сервера, создает новый флажок для каждого элемента и добавляет его в линейный макет (называемый ll ниже). Проблема, с которой я сталкиваюсь, заключается в том, что я не могу установить «левое поле макета» с помощью java, как я могу с XML (это для подзадач, чтобы они немного отступали на экране). Я могу установить большинство других свойств xml, но cb.setMargins() не работает (говорит флажок undefined for type). Установка отступов, конечно, не дает желаемого результата.

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

Любые идеи или как я буду работать через это?


person Satchmo    schedule 30.10.2010    source источник


Ответы (2)


Я думаю, вы должны добавить флажок в LinearLayout, используя правильные LayoutParams:

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

Надеюсь, это поможет!

person lencinhaus    schedule 30.10.2010
comment
Я видел этот код 100 раз, но так и не понял, как его правильно использовать. Я всегда думал, что создал новую линейную компоновку. Это сработало отлично и было очень полезно, спасибо. - person Satchmo; 30.10.2010

Привет, попробуй это...

    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);
    }
person Nikhil Dinesh    schedule 19.07.2011
comment
Как это добавляет поле к динамически созданному флажку? - person Oleksiy; 20.06.2014