2012-06-08 11 views
11

के बीच पैडिंग जोड़ें मेरे पास xml में रेडियोग्रुप है, और बटन प्रोग्रामेटिक रूप से जेनरेट किए जाते हैं। मैं प्रोग्रामेटिक रूप से बटन के बीच अंतर कैसे जोड़ूं।एंड्रॉइड रेडियोग्रुप बटन प्रोग्रामेटिक रूप से

मैंने सोचा कि यह LayoutParams की तरह कुछ था, लेकिन मेरी वस्तु एक स्पष्ट setPadding या setMargins विधि के साथ नहीं आती है।

यह है कि मैं क्या

RadioButton currentButton = new RadioButton(context); 
      currentButton.setText(item.getLabel()); 
      currentButton.setTextColor(Color.BLACK); 

      //add padding between buttons 
      LayoutParams params = new LayoutParams(context, null); 
      params. ... ?????? 
      currentButton.setLayoutParams(params); 

उत्तर

19

पैडिंग कोशिश कर रहा था

सामान्य LayoutParams नहीं है तरीकों गद्दी लागू करने के लिए है, लेकिन विचारों करना है। के बाद से एक RadioButton देखने के एक उपवर्ग है, तो आप इस तरह View.setPadding() उपयोग कर सकते हैं, उदाहरण के लिए:

currentButton.setPadding(0, 10, 0, 10); 

इस तल पर शीर्ष और 10px पर 10px गद्दी कहते हैं। आप पिक्सल (जैसे dp) के बगल में अन्य इकाइयों उपयोग करना चाहते हैं आप TypedValue.applyDimension() का उपयोग उन पिक्सल के लिए पहली कन्वर्ट करने के लिए कर सकते हैं।

मार्जिन

मार्जिन कुछ विशिष्ट LayoutParams वर्ग है जो उपवर्ग MarginLayoutParams पर लागू होते हैं। मार्जिन सेट करते समय एक विशिष्ट उप-वर्ग का उपयोग करना सुनिश्चित करें, उदा। जेनेरिक व्यू ग्रुप के बजाय RadioGroup.LayoutParams.LayoutParams (जब आपका मूल लेआउट RadioGroup है)। फिर आप MarginLayoutParams.setMargins() का उपयोग कर सकते हैं।

नमूना:

RadioGroup.LayoutParams params 
      = new RadioGroup.LayoutParams(context, null); 
params.setMargins(10, 0, 10, 0); 
currentButton.setLayoutParams(params); 
+4

हाय। मैंने ऊपर मार्जिन कोड की कोशिश की और यह काम नहीं करता है। बटन दूसरे के बगल में सरल हैं। – Taras

+0

मुझे लगता है कि डिफ़ॉल्ट पैडिंग मान लगभग 10 है, इसलिए जब आप 10 पैडिंग देते हैं तो आप इसे नहीं देख पाएंगे, 40 जैसे कुछ बड़े मूल्यों को आजमाएं और आप इसे काम करेंगे। –