2011-10-26 20 views
8

Tôi đang cố gắng để thiết lập một quỹ để đảm bảo RadioButtons thêm theo chương trình vào một RadioGroup, nhưng nó không thành công .: Cơ sở RadioButtons được bổ sung một cách chính xác, nhưng họ có 0 lề ...Margin thiết lập trình trên RadioButton không áp dụng

Bất kỳ ai có thể giúp?

enter image description here

bố trí

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

hoạt động

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

Trả lời

16

tôi đã phải thay

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

bởi

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

Điều quan trọng đối với khung nhìn cha mẹ của radiobutton là tạo LayoutParams. Cảm ơn. – herbertD

+0

mật độ là gì? @jul – Erum

+0

@Erum Kiểm tra câu hỏi, câu hỏi được xác định ở đó. – jul

1

Mã của bạn có vẻ là đúng. Hãy thử áp dụng LayoutParams trực tiếp đến các nút của bạn

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

Cùng một kết quả .... – jul

+0

@jul thử kiểm tra rằng 'margin' không phải là' 0': 'Log.d (" bất kỳ "," margin value: "+ margin);' – Vladimir

4

Hãy thử điều này:

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); 
Các vấn đề liên quan