पात्रों के संदर्भ में TextView की चौड़ाई निर्धारित करें


88

वास्तव में इस का जवाब तलाश रहे हैं ।

एक संख्या या वर्णों के आधार पर एक TextView की चौड़ाई सेट करना चाहते हैं। इसलिए अगर मैं चाहता हूं कि यह हमेशा 3 वर्णों वाला चौड़ा हो, तो मैं इसे सेट कर सकता हूं और यह टेक्स्टसेज़ सेटिंग के आधार पर समायोजित हो जाएगा। इसके बिना, मुझे 50dip या कुछ के लिए एक चौड़ाई निर्धारित करनी होगी, जो फ़ॉन्ट आकार के आधार पर सही हो सकती है या नहीं भी हो सकती है।


संभवतः अपने आयाम को निर्दिष्ट करने के माध्यम से ऐसा करने का एक तरीका है sp
कॉमन्सवेअर

@CommonsWare, हाँ, अगर आप मुझे बता सकते हैं कि कितने एसपी एक समान चरित्र है जो काम कर सकते हैं (लेकिन मेरे जवाब का उपयोग मीनमेम्स का उपयोग करके देखें क्योंकि मुझे लगता है कि मुझे वही चाहिए)। इसलिए यदि पाठ का आकार = 30sp और मुझे 3 अक्षर चौड़ा चाहिए, तो क्या मैं 90sp की चौड़ाई निर्धारित करूंगा? मुझे लगता है कि मैं यह कोशिश कर सकता था।
फ्रैगल

2
हाँ, minEmsशायद एक बेहतर जवाब है।
कॉमन्सवेयर

जवाबों:


177

मेरे अपने प्रश्न का उत्तर दे रहा है ...

और विजेता है: minEmsविशेषता सेट करें ( android:minEms) !!!

तो " ईएमएस " यह पता चला है कि व्यापक चरित्र के आकार को संदर्भित करता है, आमतौर पर एक "एम", इसे प्राप्त करें? तो एक पूर्णांक मान के लिए minEms सेट करना 3, एक EditText या TextView पर यह सुनिश्चित करना चाहिए कि यह कम से कम 3 वर्ण चौड़ा है। आप अधिकतम रूप से भी सेट कर सकते हैं।

तो इस धागे पर काइल का जवाब, हालांकि गलत था, मुझे जवाब खोजने के लिए प्रेरित किया, इसलिए काइल को धन्यवाद।


3
बेशक मैं अभी भी यह देखने के लिए परीक्षण कर रहा हूं कि क्या यह वास्तव में काम करता है, लेकिन अभी तक यह ऐसा दिखता है।
फ्रैगल

8
यह भी ध्यान रखें कि layout_widthजरूरतों को होने के लिए wrap_contentके रूप में के रूप में, इरादा minEms और काम करने के लिए maxEms के लिए इस उत्तर अंक बाहर।
जोनीक

0

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


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

0

प्रयोग करके देखें: android:maxLength="3"

यह आपके पाठ को विशिष्ट वर्णों तक सीमित कर देगा।


0

ems, लोकप्रिय मान्यताओं के विपरीत (या यहां कम से कम अधिकांश थ्रेड्स के बारे में), एक एकल 'एम' की चौड़ाई से आधारित नहीं है।

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

तो इसका मतलब है कि जब आप emsएक TextView के लिए निर्दिष्ट करते हैं , तो यह इसका textSizeआधार के रूप में उपयोग करेगा और इसे emsनिर्दिष्ट द्वारा गुणा करेगा ।

नमूने के रूप में, यदि आप एक 16sp TextView का ems4 सेट करते हैं, तो इसकी चौड़ाई 64sp चौड़ी होगी। आप includeFontPaddingएक ConstraintLayout के अंदर (इसके उत्तोलन के लिए) साइड-बाय-साइड दो TextView ( सेट टू झूठ) का उपयोग करके आसानी से इसका परीक्षण कर सकते हैं layout_constraintDimensionRatio

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.