14

एक TextView प्रदर्शित करने के लिए प्राप्त करने के लिए (और साथ दोस्ताना कार्य) एचटीएमएल मेरी कोड तरह दिखता है तार:मैं एचटीएमएल.फ्रॉम एचटीएमएल लिंक फोकस दृश्यता समस्याओं (आईसीएस और हनीकॉम में) कैसे ठीक करूं?

// itemHtml is a String of HTML defined above 

TextView itemContent = (TextView) findViewById(R.id.itemContent); 
itemContent.setText(Html.fromHtml(itemHtml)); 
itemContent.setMovementMethod(LinkMovementMethod.getInstance()); 

एचटीएमएल स्ट्रिंग एक लिंक, TextView परिणाम लिंक क्लिक करने योग्य और फ़ोकस करने योग्य हैं में है। जब उपयोगकर्ता किसी विशिष्ट लिंक पर केंद्रित होता है (उदा। डी-पैड का उपयोग करके), लिंक टेक्स्ट कुछ महत्वपूर्ण तरीके से बदलता है ताकि यह दिखाया जा सके कि फोकस प्राप्त हुआ था।

समस्या यह है कि जब मैं एंड्रॉइड के हनीकॉम (जैसे एक Google टीवी) या आइस क्रीम सैंडविच स्वाद का उपयोग करते हुए डी-पैड वाले उपकरणों का उपयोग करके इस पैटर्न का परीक्षण करता हूं, तो टेक्स्ट में लिंक से कोई उल्लेखनीय संकेत नहीं मिलता है कि लिंक में ध्यान देते हैं।

मुझे पता है कि यह ध्यान केंद्रित कर रहा है, क्योंकि जब आप एंटर दबाते हैं तो यह निर्दिष्ट कार्रवाई करता है। आप पाठ में विभिन्न लिंक के बीच भी घूम सकते हैं; आप अभी अनुमान लगा रहे हैं कि आप वर्तमान में किस लिंक पर हैं, जिसके परिणामस्वरूप बहुत खराब उपयोगकर्ता अनुभव होता है।

क्या कुछ ऐसा है जो मैं गलत कर रहा हूं? क्या इसे ठीक करने या इसके आसपास काम करने का कोई तरीका है?

उत्तर

1

जिस तरह से HTML.fromHTML संचालित होता है स्ट्रिंग के विभिन्न वर्णों में अलग-अलग प्रभावों के साथ "स्पैन" बनाकर होता है। इसके लिए एक वर्कअराउंड ClickableSpan का प्रयोग करने के लिए टेक्स्ट को रंगीन करने के लिए वर्णमाला में से किसी एक के साथ जोड़ा जाएगा। पिछली अवधि आपको कॉलबैक पंजीकृत करने की अनुमति देगी, और यह कॉलबैक एक यूआरएल देखने के इरादे को प्रसारित करने के लिए हो सकता है (जो ब्राउज़र खोल देगा)।

+0

मुझे लगता है कि आपको गलत समझा जाता है। जैसा कि मैंने उल्लेख किया है, कार्रवाई (यानी यूआरएल खोलना) लागू किया गया है। समस्या यह है कि कोई दृश्य प्रतिनिधित्व नहीं है कि लिंक चुना गया है। – yydl

1

हनीकॉम्ब + के लिए टेक्स्ट कलर स्टेट सूचियां फोकस स्थिति को एक अलग रंग में सेट नहीं कर सकती हैं, या आप स्थिर होने के लिए रंग को ओवरराइड कर सकते हैं।

your_android_sdk_directory/एंड्रॉयड-14/डेटा/res/

में रंग + शैलियों की जाँच करें एंड्रॉयड के लिए पाठ की स्थापना: autoLink = "वेब" भी मदद कर सकता है?

1

ऐसा करने का सबसे अच्छा तरीका है अपने एचटीएमएल में सीएसएस स्टाइल जोड़ने के लिए। मुझे पता है एंड्रॉइड :hover चयनकर्ता का समर्थन करता है। तो तुम हो सकता है सही कुछ इस तरह:

String myLink = "<a href=\"http:\/\/google.com\">your link</a>" 
Html.fromHtml(myLink); 

और एक तरह से यह करने के लिए सीएसएस डेटा शामिल करने के लिए लगता है: (मुझे यकीन है कि कैसे, लेकिन मुझे लगता है कि यह संभव है नहीं कर रहा हूँ)

a :hover { 
    color: red; 
} 

अद्यतन:

मुझे लगता है कि आपके प्रश्न का उत्तर there है।

2

संपादित: थोड़ा पागल जाने के बाद, मैं अंत में सोचा मैं एक समाधान मिल गया। हालांकि, यह समाधान केवल हनीकॉम के लिए काम करता है। आईसीएस अभी भी हल नहीं हुआ है!

एपीआई 11 के रूप में, एंड्रॉइड की टेक्स्टव्यू पर एक नई सेटिंग है यह निर्धारित करने के लिए कि टेक्स्ट चयन योग्य है या नहीं।

आप इसे एक TextView पर setTextIsSelectable(true) का उपयोग कर सकता है, या एक्सएमएल लेआउट android:textIsSelectable="true"

में परिभाषित यह शायद इसलिए है कि एप्लिकेशन पीछे की ओर संगत रखने तुच्छ है, XML में ठीक से परिभाषित करने के लिए सबसे अच्छा है सकते हैं।बस सुनिश्चित करें कि आप संस्करण> = 11 को लक्षित कर रहे हैं, या आपको शायद एक त्रुटि मिल जाएगी।

+0

मैंने कोशिश की, यह काम कर रहा है, धन्यवाद – junto

+0

@junto आपका स्वागत है। लेकिन क्या यह आईसीएस पर भी काम करता है? – yydl

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