2012-09-02 20 views
5
इसके बजाय प्रत्येक TextView के लिए इस निम्न पंक्ति का उपयोग करने का

:क्या मैं एंड्रॉइड के लिए एक्सएमएल में चर का उपयोग कर सकता हूं?

android:textSize="40sp" 

मैं एक चर के साथ 40sp की जगह करने में सक्षम हूँ?

एक साइड सवाल के रूप में, मुझे एसपी इकाइयों का उपयोग करने की सिफारिश की गई है क्योंकि यह उपयोगकर्ता परिभाषित सेटिंग्स द्वारा चला जाता है। क्या यह एक सर्वोत्तम अभ्यास है?

उत्तर

5

क्या मैं एक चर के साथ 40sp को प्रतिस्थापित करने में सक्षम हूं?

आप या तो उपयोग कर सकते हैं a dimension resource (जैसे, android:textSize="@dimen/someSize"), या एक शैली है कि (AlexN के जवाब के अनुसार) इस करता है का उपयोग करें, या setTextSize() के माध्यम से कार्यावधि में आकार निर्धारित किया है।

मुझे एसपी इकाइयों का उपयोग करने की अनुशंसा की गई है क्योंकि यह उपयोगकर्ता परिभाषित सेटिंग्स द्वारा चला जाता है। क्या यह एक सर्वोत्तम अभ्यास है?

एंड्रॉइड के नए संस्करणों पर, उपयोगकर्ता सेटिंग एप्लिकेशन के माध्यम से बेस फ़ॉन्ट आकार बदल सकता है। इकाइयों के लिए sp का उपयोग करके, आपके फ़ॉन्ट आकार बेस फ़ॉन्ट आकार के साथ स्केल करेंगे। यदि आप अन्य इकाइयों का उपयोग करते हैं (उदा।, dp), तो आपका फ़ॉन्ट आकार वही रहेगा चाहे उपयोगकर्ता के पास सेटिंग में क्या हो। यह कहना असंभव है कि sp का कोई भी उपयोग "सर्वोत्तम अभ्यास" है या नहीं - मुझे यकीन है कि ऐसे मामले हैं जहां फ़ॉन्ट आकार बदलने की अनुमति एक बुरी चीज होगी। डिफ़ॉल्ट रूप से, हालांकि, sp शायद सही प्रारंभिक बिंदु है।

2

जैसा कि मुझे पता है, एसपी का उपयोग टेक्स्ट आकार के लिए वास्तव में एक अच्छा अभ्यास है। और आपके पहले प्रश्न के अनुसार - मुझे लगता है कि हम चर का उपयोग नहीं कर सकते हैं, हालांकि, एक बेहतर तरीका है। इसे देखें - http://developer.android.com/guide/topics/ui/themes.html

तो अगर आप एक शैली को परिभाषित करेंगे, तो आप अपने विचार एक्सएमएल में <TextView android:id = "@+id/myId" style = "@style/myStyle"/> की तरह घोषणा कर सकते हैं और इस शैली सभी मापदंडों आपको लगता है कि स्क्रीन पर अपने textViews को सेट करना चाहते हैं incapsulate होगा।

+0

धन्यवाद। मुझे शैलियों के बारे में भी पता नहीं था। – tomofv

1

नहीं, एक्सएमएल फाइलों में कोड आधारित चर का उपयोग करना संभव नहीं है। हालांकि, आप इसके लिए शैलियों का उपयोग कर सकते हैं।

उदाहरण:

<style name="MyTvStyle"> 
    <item name="android:textSize">40sp</item> 
</style> 

तो यह इस तरह लागू होते हैं:

<TextView style="@style/MyTvStyle" ... /> 

एक कोड आधारित दृष्टिकोण भी संभव है। यदि टेक्स्ट व्यूज़ में android:id विशेषता परिभाषित है तो आप उन्हें findViewById विधि के साथ कोड में पुनर्प्राप्त कर सकते हैं।

उदाहरण:

int[] id_array = { 
    R.id.textview1, R.id.textview2, R.id.textview3 //Put all the id's of your textviews here 
} 

for(int i : id_array) { //Loop trough all the id's and retrieve the Textview associated with it. 
    TextView textview = (TextView)findViewById(i); 
    tv.setTextSize(TypedValue.COMPLEX_UNIT_SP,40); //Set the text size to 40sp 
} 

और हाँ यह हमेशा बेहतर सामान्य पिक्सेल मान के स्थान पर sp उपयोग करने के लिए है। चूंकि sp डिवाइस आकार और उपयोगकर्ता सेटिंग्स के साथ स्केल करेगा।

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

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