Привет, я разбираю xml, а затем загружаю его в веб-представление, после синтаксического анализа я создаю четыре строки, чтобы я мог добавить всю строку в одно представление. Я могу получить два представления в веб-представлении, но не первые две строки.
Пожалуйста, предложите мне мой код, где я ошибаюсь и как правильно получить отформатированные строки html в веб-представлении. Пожалуйста, взгляните на мой код и помогите мне решить эту проблему.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
String chapterTitle = "";
String SubChapterTitle="";
String chapterIntro ="";
String chapterContent="";
View view = convertView;
if (convertView == null) {
// view = inflater.inflate(resourceid, null);
view = getLayoutInflater().inflate(R.layout.webviewitem, null);
}
synchronized (view) {
WebView wv = (WebView) view.findViewById(R.id.contentWebView);
WebSettings settings = wv.getSettings();
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setJavaScriptEnabled(true);
settings.setDefaultZoom(ZoomDensity.FAR);
// wv.setBackgroundColor(0);
wv.setVerticalScrollBarEnabled(false);
wv.setHorizontalScrollBarEnabled(false);
/*String txtChapTitle = Intro.book.getsecretList().get(position)
.getChtitle().toString();*/
if (!(Intro.book.getsecretList().get(position).getChtitle()
.toString().equals(""))){
chapterTitle = "<b><fontSize=4>"+Intro.book.getsecretList().get(position)
.getChtitle().toString()+"</font></b>";
}
if (!(Intro.book.getsecretList().get(position)
.getSubtitle() == null)) {
SubChapterTitle = "<b><fontSize=4>"+Intro.book.getsecretList().get(position)
.getSubtitle().toString()+"</font></b>";
}
if (!(Intro.book.getsecretList().get(position)
.getIntro() == null)) {
chapterIntro = "<b><fontSize=2>"+Intro.book.getsecretList().get(position)
.getIntro().toString()+"</font></b>";
}
if (!(Intro.book.getsecretList().get(position)
.getContent() == null)) {
chapterContent = "<fontSize=2>"+Intro.book.getsecretList().get(position)
.getContent().toString()+"</font>";
}
StringBuilder content = new StringBuilder();
content.append(chapterTitle+SubChapterTitle+chapterIntro+chapterContent);
JsInterface Jsi = new JsInterface();
Jsi.wordDef = content ;
Log.v("Content", "" +content);
wv.addJavascriptInterface(Jsi, "interfaces");
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
view.setHapticFeedbackEnabled(false);
}
});
wv.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url,
String message, JsResult result) {
return super.onJsAlert(view, url, message, result);
}
});
wv.loadUrl("file:///android_asset/wordview.html");
}
return view;
}
}
Я могу получить chapterIntro и chaptercontent в веб-представлении, но не первые две строки, пожалуйста, помогите мне, друзья.
Чтобы загрузить ваши данные в WebView. Вызов метода loadData () WebView
webView.loadData(yourData, "text/html; charset=utf-8", "UTF-8");
Вы можете проверить этот пример
http://developer.android.com/reference/android/webkit/WebView.html
источник
webView.loadData(yourData, "text/html; charset=utf-8", "UTF-8");
Лучше передать null. Полные коды выглядят так:
WebView wv = (WebView)this.findViewById(R.id.myWebView); wv.getSettings().setJavaScriptEnabled(true); wv.loadDataWithBaseURL(null, "<html>...</html>", "text/html", "utf-8", null);
источник
Я использовал некоторые кнопки с некоторыми событиями, преобразованный файл изображения, поступающий с сервера. Загрузка обычных данных у меня не работала, конвертация в Base64 работала нормально.
String unencodedHtml ="<html><body>'%28' is the code for '('</body></html>"; tring encodedHtml = Base64.encodeToString(unencodedHtml.getBytes(), Base64.NO_PADDING); webView.loadData(encodedHtml, "text/html", "base64");
Узнать подробности о WebView
источник
getBytes()
следующим образом:unencodedHtml.getBytes("UTF-8")
и определить кодировку в типе MIME , как это:"text/html; charset=utf-8"
.