以编程方式在RadioButton上设置的边距未应用

时间:2011-10-26 16:38:39

标签: android margin

我正在设置为RadioButtons以编程方式添加到RadioGroup的边距,但它失败了:RadioButtons被正确添加,但它们有0个边距......

有人可以帮忙吗?

enter image description here

布局

<RadioGroup android:id="@+id/rg_nav" android:orientation="vertical"
    android:layout_width="wrap_content" android:layout_height="wrap_content">
</RadioGroup>

活性

float density = getResources().getDisplayMetrics().density;

rg_nav = (RadioGroup) findViewById(R.id.rg_nav);

LinearLayout.LayoutParams params_rb = new LinearLayout.LayoutParams(
        (int)(8*density),
        (int)(8*density));
int margin = (int)(6*density);
params_rb.setMargins(margin, margin, margin, margin);

for(String url : product.list_url_pic){

    RadioButton radio_btn = new RadioButton(ProductHome.this);  
    radio_btn.setButtonDrawable(R.drawable.rb_nav);
    radio_btn.setId(rb_id++);
    rg_nav.addView(radio_btn, params_rb);
}  

3 个答案:

答案 0 :(得分:18)

我不得不替换

LinearLayout.LayoutParams params_rb = new LinearLayout.LayoutParams(
    (int)(8*density),
    (int)(8*density));

通过

RadioGroup.LayoutParams params_rb = new RadioGroup.LayoutParams(
                (int)(8*density),
                (int)(8*density));

答案 1 :(得分:4)

试试这个:

TableRow.LayoutParams rg_params = new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 3f);
RadioGroup radio_group=new RadioGroup(this);
radio_group.setOrientation(RadioGroup.HORIZONTAL);
radio_group.setLayoutParams(rg_params);

RadioButton dry=new RadioButton(this);
RadioGroup.LayoutParams params_soiled = new RadioGroup.LayoutParams(getBaseContext(), null);
params_soiled.setMargins(10, 0, 10, 0);
dry.setLayoutParams(button_params);

答案 2 :(得分:1)

您的代码似乎是正确的。 尝试将LayoutParams直接应用于按钮

radio_btn.setButtonDrawable(R.drawable.rb_nav);
radio_btn.setId(rb_id++);    
rg_nav.addView(radio_btn);
radio_btn.setLayoutParams(params_rb);