2012-11-12 19 views
17

में रिच टेक्स्ट मुझे अपने प्रोग्राम के लिए "जानकारी" बनाने की आवश्यकता है। मैं कई रंग, शैली, फोंट, ईसीसी के साथ जानकारी पाठ भरना चाहता हूं।टेक्स्टव्यू

मैं इस पाया: http://www.chrisumbel.com/article/android_textview_rich_text_spannablestring

वहाँ एक और तरीका है (बेहतर आसान) यह करने के लिए है?

धन्यवाद!

उत्तर

3

जब मुझे अतीत में स्वरूपित पाठ की आवश्यकता होती है, तो मैंने स्वरूपण के साथ एक HTML फ़ाइल बनाई है, इसे res/raw निर्देशिका में फंस लिया है और उसे वेबव्यू में लोड किया है। मैंने पहले कभी भी विभिन्न फ़ॉन्ट्स के साथ यह कोशिश नहीं की है, भले ही यह सुनिश्चित न हो कि यह काम करेगा, लेकिन बोल्ड और इटालिक्स इत्यादि काम करेंगे।

14

अपना प्रश्न शीर्षक पढ़ने पर, मैं आपको उस सटीक लेख का एक लिंक देने के लिए तैयार था। मैंने काफी शक्तिशाली होने के लिए स्पैन और SpannableString का उपयोग किया है। वैकल्पिक आपके टेक्स्ट के लिए HTML स्वरूपण का उपयोग करना होगा, जिसे Html.fromHtml() के साथ किया जा सकता है।

हालांकि, यह बिल्कुल स्पष्ट नहीं है जो HTML टैग का समर्थन कर रहे हैं, क्योंकि प्रलेखन बस पढ़ता है:

इस वर्ग के प्रदर्शन योग्य स्टाइल पाठ में HTML तार संसाधित करता है। सभी HTML टैग समर्थित हैं।

तो, एक अच्छे समाधान के लिए, मैं निश्चित रूप से लेख में SpannableString दृष्टिकोण के साथ जाऊंगा। यह विधि अभ्यास में बहुत आसान है क्योंकि आप अपनी खुद की अवधि कक्षाएं भी बना सकते हैं जो मौजूदा लोगों को बढ़ाते हैं (उदाहरण के लिए, यदि आप पाठ का एक अनुभाग चाहते हैं तो कस्टम फ़ॉन्ट का उपयोग न करें)।

+0

अच्छा जवाब, स्पैन करने योग्य स्ट्रिंग इसके लिए वास्तव में शक्तिशाली उपकरण है। मैं उस वर्ग द्वारा एक RichTextView लाइब्रेरी बनाने के लिए प्रेरित था जो हुड के तहत स्पैन करने योग्य स्ट्रिंग का उपयोग करता है फिर भी डेवलपर्स के लिए उपयोग को सरल बनाता है: http://stackoverflow.com/a/36404986/3131147 – AdamMc331

6

मैंने सप्ताहांत में एक लाइब्रेरी लिखी जो इसे संभालती है, मैंने इसे RichTextView कहा।

लाइब्रेरी आपको टेक्स्ट की अवधि (इसे बोल्ड, अंडरलाइन, इटैलिक, संयोजन इत्यादि) के साथ-साथ रंग (टेक्स्ट रंग और हाइलाइट) बनाने की अनुमति देती है। अगली रिलीज में मैं कस्टम फ़ॉन्ट स्पैन और साथ ही साथ अनुमति देने की योजना बना रहा हूं। अब

compile 'com.androidessence.lib:richtextview:1.0.1' 

, मान लीजिए कि आप पहले चार अक्षर बोल्ड बनाना चाहते हैं, तो आप बस निम्नलिखित कॉल कर सकते हैं:

यह सरल है उपयोग करने के लिए, बस अपने Gradle फ़ाइल में निम्न निर्भरता जोड़ने

myRichTextView.formatSpan(0, 4, RichTextView.FormatType.BOLD); 

ध्यान दें कि अंत सूचकांक पैरामीटर समावेशी नहीं है, इसलिए कहकर (0 -> 4) हम वास्तव में सूचकांक (0 -> 3) बोल्ड कर रहे हैं।

तुम दोनों बोल्ड करते हैं और रेखांकन, एक EnumSet उपयोग करने के लिए करना चाहते हैं:

myRichTextView.formatSpan(0, 4, EnumSet.of(RichTextView.FormatType.BOLD, RichTextView.FormatType.UNDERLINE)); 

नवीनतम जानकारी के लिए कृपया, Github रिपॉजिटरी ऊपर लिंक को देखने हालांकि मैं इस जवाब किसी भी समय हो जाता है अद्यतन करने के लिए कोशिश करेंगे रगड़ा हुआ।

+0

सुंदर! यह स्वीकार्य उत्तर होना चाहिए। –

+0

यह सही ट्रिस्टन है; lol – Eenvincible

+0

अद्भुत lib, अन्य समाधान की तुलना में उपयोग करने के लिए बहुत आसान है। – Mauker

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