2011-02-17 6 views
14

अगर मैं धक्का WebView में यह HTML:Android WebView, गलत तरीके से पूर्वस्वरूपित पाठ में नई-पंक्तियों से निपटने

webView.loadData("<html><body><pre>line 1\nline 2</pre></body></html>", "text/html", "utf-8"); 

यह रूप में

के विपरीत (एमुलेटर में है और यह भी डिवाइस पर)

line 1line 2 

renders

line 1 
line 2 

जैसा कि मैं उम्मीद करता हूं। अगर मैं इस HTML को एसडीकार्ड में सहेजता हूं और ब्राउज़र में फ़ाइल खोलता हूं, तो यह ठीक है। मुझे लगता है कि मैं कुछ गलत कर रहा हूं, या यह एक बग हो सकता है। किसी भी तरह से, मैं प्रोग्राम्सिक रूप से एचटीएमएल को preformatted न्यूलाइन के साथ WebView में धक्का देना चाहता हूं और नई लाइनें प्रस्तुत की गई हैं।

उत्तर

19

loadData को पारित स्ट्रिंग को यूआरआई से बचने की आवश्यकता है।

आप URLEncoder.encode() का उपयोग करने के लिए कर सकते हैं, लेकिन किसी कारण WebView के लिए वापस एक ' ' को '+' डिकोड नहीं है। '%20' के साथ सभी '+' को प्रतिस्थापित करने के लिए एक कार्य है।

उदाहरण (और '+' अनुवाद के साथ) के लिए:

try { 
    webview.loadData(URLEncoder.encode("<html><body><pre>line 1\nline 2</pre></body></html>", "utf-8").replaceAll("\\+", "%20"), "text/html", "utf-8"); 
} catch (UnsupportedEncodingException uee) { 
    Log.e("webview", "", uee); 
} 
+5

था nks! अगली बार, मैं आरटीएफएम ठीक से – Axarydax

+0

करूँगा जब मैं सर्वर से डाउनलोड किए गए एचटीएमएल डेटा को पास कर रहा था, वेबव्यू ने मुझे दिखाया कि "पेज उपलब्ध नहीं है" संदेश। इस पोस्ट ने मुझे अपनी समस्या को हल करने में भी मदद की – vokilam

+0

"टेक्स्ट/सादा" के लिए न्यूलाइन - पेज अभी भी काम नहीं कर रहे हैं, भले ही लोड स्ट्रिंग यूआरएल-एन्कोडेड हो। – Radon8472

9

इस प्रयास करें:

webView.loadDataWithBaseURL(...) 

अधिक जानकारी here

+2

सरल और काम कर रहा है! उदाहरण कॉल: 'webView.loadDataWithBaseURL (शून्य, एचटीएमएल," टेक्स्ट/एचटीएमएल "," यूटीएफ -8 ", शून्य);' –

2

इसके अलावा, आप उपयोग कर सकते हैं

chapterWebView.loadDataWithBaseURL("file:///android_asset/NTImages/", message.replaceAll("\\n", "<br/>") , "text/html", "utf-8", "utf-8"); 
संबंधित मुद्दे