2012-10-26 16 views
5

Tôi muốn tự động tạo các nút theo chiều dọc với lề dưới 20px giữa các nút. Tôi cố gắng thiết lập lề với một đối tượng LayoutParams, mà không thành công.android: đặt lề giữa các nút bằng LayoutParams

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/regions_search" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_marginBottom="30dip" 
    android:orientation="vertical" > 
</LinearLayout> 



@Override 
public void onCreate(Bundle savedInstanceState) { 

    ... 

    for (Region region : regionsList) { 

     //create new button  
     Button button = new Button(mContext); 

     //set infos 
     int id = Integer.parseInt(Long.toString((Long) region.getId()));  button.setId(id); 
     button.setText(region.getName() + "(" + region.getStores_nb() + ")"); 

     //Layoutparams setting 
     FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
     params.setMargins(0, 0, 0, 20); 

     button.setLayoutParams(params); 

     myLinear.addView(button); 

     } 

Như bạn có thể thấy trên hình ảnh, không có khoảng cách giữa các hình ảnh. Ai đó biết tại sao? Cảm ơn bạn! enter image description here

+0

Tại sao bạn sử dụng FrameLayout? Tệp XML nằm trong LinearLayout. –

+0

Xong, cảm ơn bạn – johann

Trả lời

9

Bạn có thể thử này:

LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) button.getLayoutParams(); 
layoutParams.bottomMargin += 20; 
button.setLayoutParams(layoutParams); 
+0

Cảm ơn bạn! Tất cả các bạn đều trả lời cho tôi, nhưng bạn là người đầu tiên đăng bài! Cảm ơn bạn ~ – johann

+0

Thực ra tôi nghĩ Nunu là người đầu tiên;) .. nhưng cảm ơn – Cata

+0

, hãy xem http://stackoverflow.com/questions/16552811/set-a-margin-between-two-buttons-programmatically-from- này a-linearlayout? noredirect = 1 # comment23779639_16552811 – Dimitri

2

Cố gắng sử dụng LinearLayout.LayoutParams thay vì FrameLayout.LayoutParams, như trong xml của bạn, bạn đang sử dụng LinearLayout ..

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
+1

Cata nhanh hơn bạn, xin lỗi. Cảm ơn sự giúp đỡ của bạn – johann