2013-03-22 3 views
5

जब मैं कोई अन्य बटन टैप करता हूं, तो मैं अपने मौजूदा एंड्रॉइड व्यू में प्रोग्रामेटिक रूप से एक बटन जोड़ रहा हूं। यह कार्यक्षमता के मामले में काम कर रहा है, लेकिन कुछ स्टाइल की जानकारी को अनदेखा किया जा रहा है।एंड्रॉइड - एक व्यू प्रोग्रामिंग रूप से कुछ स्टाइल गुणों को अनदेखा करता है

मैं स्टाइल वैल्यू प्री-भरे हुए बटन के साथ एक अलग लेआउट वाला बटन जोड़ रहा हूं।

<Button xmlns:android="http://schemas.android.com/apk/res/android" style="@style/FileStorageDeleteButton"></Button>

getLayoutInflater का उपयोग करके, मैं तो लेआउट के लिए इस बटन को जोड़ने में सक्षम हूँ।

buttonDelete = (Button) getLayoutInflater().inflate(R.layout.pete_button_filedelete, null);

LinearLayout layout = (LinearLayout)findViewById(R.id.layoutFileStorage);

layout.addView(buttonDelete, 1);

मैं मान निर्देशिका जो रंग सेट में एक XML फ़ाइल, @style/FileStorageDeleteButton, जिनमें से अधिकांश बटन द्वारा इस्तेमाल किया जा रहा है जब यह जोड़ा है के लिए पाठ आदि है । लेकिन किसी कारण से चार मार्जिन विशेषताओं और layout_below को अनदेखा किया जा रहा है।

मुझे यह बटन दिखाई देने पर लॉगकैट में कोई त्रुटि नहीं मिल रही है, ऐसा लगता है कि स्टाइल बस लागू नहीं हो रहा है। यदि मैं उस लेआउट के लिए XML में मैन्युअल रूप से बटन शामिल करता हूं, तो यह सभी शैलियों को सफलतापूर्वक उपयोग करता है।

किसी भी मदद की बहुत सराहना की।

उत्तर

3

जब आप addView() पर कॉल करते हैं तो आपको लेआउट पैरामीटर को पारित करने की आवश्यकता होती है क्योंकि लेआउट पैरामीटर एक दृश्य के लिए प्रासंगिक नहीं हैं, उन्हें हमेशा आसपास के दृश्य के संदर्भ में लिया जाता है। addView() के वेरिएंट हैं जो LayoutParams तर्क लेते हैं।

संपादित करें अधिक जानकारी के

आप LinearLayout.LayoutParams का एक सेट बना सकते हैं और वहाँ में अपने मार्जिन स्थापित करना चाहिए, तो पारित कि addView()

layout_below करने के लिए एक LinearLayout वैसे भी के लिए नजरअंदाज कर दिया है (उस गुण ही प्रासंगिक है RelativeLayout के लिए। जब ​​आप addView(buttonDelete, 1) पर कॉल करते हैं तो आप इसे बता रहे हैं कि दृश्य को रैखिक लेआउट में कहां रखा जाए।

+0

धन्यवाद डेविड - आपकी पोस्ट ने मुझे सही दिशा में भेजा ताकि यह पता चल सके कि मैं पी कर सकता हूं फुलाए जाने में अधिक चर अब 'buttonDelete = (बटन) getLayoutInflater() का उपयोग करें। Inflate (R.layout.pete_button_filedelete, लेआउट, झूठा); ', हालांकि' layout_below' अभी भी अनदेखा किया जा रहा है। मैं इसके चारों ओर मिल सकता हूं, लेकिन सिर्फ सोच रहा हूं कि वह अभी भी क्यों काम नहीं कर रहा है? एक बार फिर धन्यवाद! अगर मैं आपको ऊपर उठाने की प्रतिष्ठा रखता हूं, तो मैं :) –

+0

'layout_below' का उपयोग केवल 'रिलेवेटिवआउट' के लिए किया जाता है। आपका 'LinearLayout' इस विशेषता को अनदेखा करता है। 'लीनियरलाउट' में आप लेआउट के भीतर दृश्य की स्थिति का उपयोग कर ऊपर/नीचे नियंत्रित कर सकते हैं। –

संबंधित मुद्दे