В моем приложениисодержание Android WebView иногда не соответствует ширине
первой у меня есть некоторые HTML код как строку, то я загрузить его в WebView, как это:
WebView content = (WebView) rootView.findViewById(R.id.content);
StringBuilder sb = new StringBuilder();
sb.append("<HTML><HEAD><meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0'></HEAD><body>");
sb.append(pageItem.page_content_chi.toString());
sb.append("</body></HTML>");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
content.getSettings().setAllowUniversalAccessFromFileURLs(true);
content.getSettings().setAllowFileAccessFromFileURLs(true);
}
content.setWebChromeClient(new WebChromeClient());
content.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
});
content.getSettings().setUseWideViewPort(true);
content.getSettings().setJavaScriptEnabled(true);
content.getSettings().setLoadWithOverviewMode(true);
content.getSettings().setAppCacheMaxSize(1024 * 1024 * 8);
String cachePath = ctx.getCacheDir().getAbsolutePath();
content.getSettings().setAppCachePath(cachePath);
content.getSettings().setAppCacheEnabled(true);
content.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
content.loadDataWithBaseURL("file:///android_asset/",sb.toString(), "text/html", "utf-8", null);
content.setBackgroundColor(0x00000000);
content.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return (event.getAction() == MotionEvent.ACTION_MOVE);
}
});
content.setVerticalScrollBarEnabled(false);
content.setHorizontalScrollBarEnabled(false);
Планировка:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:scrollbars="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="5dp"
android:textSize="25sp"
android:textStyle="bold" />
<WebView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
</LinearLayout>
Проблема в том, что содержимое внутри webview иногда соответствует ширине, однако иногда оно не подходит и не превышает ширину. Это случается случайным образом, поэтому, когда я нажимаю на вкладку и перезагружаю веб-просмотр, она иногда соответствует представлению и иногда превышает представление. Как это исправить? Большое спасибо
Возможно, это связано с тем, что вы использовали width = device-width, как правило, изменения поведения для Интернета и мобильных устройств. попробуйте изменить его. –