2012-10-26 36 views
5

के साथ बटन के बीच मार्जिन सेट करें मैं बटन के बीच 20px के नीचे मार्जिन के साथ स्वचालित रूप से लंबवत बटन जेनरेट करना चाहता हूं। मैं बिना किसी सफलता के लेआउटपैरम्स ऑब्जेक्ट के साथ मार्जिन सेट करने का प्रयास करता हूं।एंड्रॉइड: लेआउटपैम्स

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

     } 

जैसा कि आप छवि पर देख सकते हैं, छवियों के बीच कोई जगह नहीं है। किसी को पता है क्यों? धन्यवाद! enter image description here

+0

आप FrameLayout क्यों करें? एक्सएमएल फ़ाइल लीनरलआउट में है। –

+0

हो गया, धन्यवाद – johann

उत्तर

9

आप इस कोशिश कर सकते हैं:

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

धन्यवाद! आप सभी मुझे एक ही जवाब देते हैं, लेकिन आप पोस्ट करने वाले पहले व्यक्ति थे! धन्यवाद ~ – johann

+0

असल में मुझे लगता है कि नूनू पहला था;) .. लेकिन धन्यवाद – Cata

+0

कृपया यह http://stackoverflow.com/questions/16552811/set-a-margin-between-two-buttons-programmatically-from- एक-LinearLayout? noredirect = 1 # comment23779639_16552811 – Dimitri

2

कोशिश के रूप में अपने xml में आप LinearLayout उपयोग कर रहे हैं FrameLayout.LayoutParams के बजाय LinearLayout.LayoutParams, उपयोग करने के लिए ..

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

कैटा आपके से तेज़ था, क्षमा करें। आपकी मदद के लिए धन्यवाद – johann