2011-08-03 11 views
13

मेरे पास नीचे एक संपादन टेक्स्ट लेआउट है और मैं जानना चाहता हूं, क्या इसके स्क्रीन आकार के आधार पर विभिन्न हार्डवेयर के लिए अलग-अलग आकार प्रदान करने का कोई तरीका है? 4 इंच नीचे स्क्रीन के लिए मैं नीचे लेआउटविभिन्न हार्डवेयर के लिए अलग-अलग पाठ आकार

<EditText 
    android:id="@+id/entry" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@android:drawable/editbox_background" 
    android:textColor="#800080" 
    android:text="" 
    android:hint=" No Operator Precednce yet" 
    android:cursorVisible="false" 
    android:textSize="40dip" 

/> 
दूसरों के लिए

और फिर

<EditText 
    android:id="@+id/entry" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@android:drawable/editbox_background" 
    android:textColor="#800080" 
    android:text="" 
    android:hint=" No Operator Precednce yet" 
    android:cursorVisible="false" 
    android:textSize="30dip" 

/> 

उत्तर

40

के लिए

लेआउट

लेआउट-छोटे

लेआउट सामान्य

लेआउट बड़े

लेआउट-xlarge

+०१२३५१६४१०/रेस में फ़ोल्डर बनाएं

फिर प्रत्येक लेआउट के लिए एक लेआउट फ़ाइल बनाएं, एंड्रॉइड रनटाइम पर सही का चयन करेगा। ताकि आप प्रत्येक स्क्रीनसाइज के लिए पूरा लेआउट बदल सकें।

तुम सच में ही आकार सेट करना चाहते हैं, तो आप इस फ़ोल्डर

मूल्यों

मान-छोटे

मूल्यों सामान्य

मान-बड़े

बना सकते हैं

मूल्य-xlarge

फिर एक मंद करें।इस में से प्रत्येक में एक्सएमएल इस तरह फ़ोल्डर:

<?xml version="1.0" encoding="utf-8"?>

<resources>

<dimen name="textSizeLarge">22dp</dimen>

</resources>

बस प्रत्येक xml फ़ाइल में मूल्य (22dp) बदल जाते हैं। http://developer.android.com/guide/practices/screens_support.html

+0

हाय क्रिस्टोफ, मैंने ऐसा किया लेकिन मेरे मामले में मूल्यों को vaues-xlarge फ़ोल्डर से नहीं लिया गया है। तो क्या आप मेरी मदद कर सकते हैं कि मैं गलती कहां जा रहा हूं? – Kalpesh

+0

क्या आप मुझे बता सकते हैं कि डिफ़ॉल्ट "मान" को चलाने के लिए चुना जाता है? मेरा मतलब है कि छोटा एंड्रॉइड डिवाइस "मूल्य-छोटे" और बड़े, xlarge इत्यादि के लिए चुनता है, लेकिन किस मामले के लिए "मान" फ़ोल्डर का उपयोग किया जा रहा है? –

+0

अन्य सभी के लिए, आपने निर्दिष्ट नहीं किया है। यह उदाहरण के लिए उपयोगी है यदि आप केवल मूल्य-बड़े और मूल्य निर्दिष्ट करते हैं; बड़ी स्क्रीन के लिए यह मूल्यों से बड़े पैमाने पर वस्तुओं का उपयोग करेगा, और "मूल्य" – Axarydax

2

संपादित देना चाहता हूँ - ऐसा करने का सबसे अच्छा तरीका एक Dimen के रूप में पाठ आकार को परिभाषित करने के लिए है और अलग-अलग आपके अलग-अलग डीपीआई (ldpi, mdpi, hdpi आदि) बाल्टी फ़ोल्डरों में dimens.xml फ़ाइल में अलग-अलग मान डालकर आप जिस हार्डवेयर को लक्षित कर रहे हैं उसके आधार पर आकार।

पुरानी (सही लेकिन महान नहीं) जवाब ऐसा करने का

2 तरीके:

  1. एक्सएमएल से परिभाषा निकालें और पाठ का आकार प्रोग्राम के

    ((EditText) findViewById(R.id.entry)).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 40) 
    
  2. implement different layouts for the different screen sizes सेट - इसमें आपको अपने आवेदन में समर्थित विभिन्न स्क्रीन आकारों में से प्रत्येक के लिए एक नया एक्सएमएल लेआउट लिखना शामिल होगा।

+0

हां, लेकिन एंड्रॉइड चुनने के लिए कौन सा एक्सएमएल रनटाइम पर उपयोग करेगा, यह वास्तव में प्रोग्रामिंग के अनुसार सब कुछ करने से वास्तव में अधिक कुशल बना देगा। आपको कभी भी प्रोग्रामिंग रूप से कुछ भी नहीं करना चाहिए, जब तक आपको बिल्कुल नहीं करना चाहिए। तो छोटे, सामान्य, बड़े और xlarge के लिए कई एक्सएमएल फाइलें बहुत बेहतर हैं। –

+0

आप बिल्कुल सही हैं - मैं क्या सोच रहा था ?! – Martyn

2

आप एक विन्यास निर्भर रास्ते में <dimen> उपयोग करते हैं, आप सभी उपकरणों के लिए डिफ़ॉल्ट आकार को पार कर जाएगी:

तो

android:textSize="@dimen/textSizeXtraSmall"

बहुत अच्छा documantation के साथ अपने मूल्य की जगह (छोटे उपकरणों के लिए 22 डीपी, बड़े उपकरणों के लिए 40 डीपी)। आप textSize छोड़ने के लिए के रूप में यह छोटे उपकरणों के लिए डिफ़ॉल्ट रूप से था, और केवल बड़े उपकरणों के लिए इसे ओवरराइड चाहते हैं, आप शैलियों का उपयोग कर सकते हैं:

res/values ​​/ styles.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="EditText" />  

</resources> 

res/values-बड़े/styles.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="EditText" > 
     <item name="android:textSize">40sp</item> 
    </style>  
</resources> 

और लेआउट में:

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

इस प्रकार textSize छोटे उपकरणों के लिए छूटा नहीं छोड़ा गया है, और वर्तमान थीम से डिफ़ॉल्ट मान का उपयोग किया जाता है।

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