0

В моем приложениисодержание 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 иногда соответствует ширине, однако иногда оно не подходит и не превышает ширину. Это случается случайным образом, поэтому, когда я нажимаю на вкладку и перезагружаю веб-просмотр, она иногда соответствует представлению и иногда превышает представление. Как это исправить? Большое спасибо

+0

Возможно, это связано с тем, что вы использовали width = device-width, как правило, изменения поведения для Интернета и мобильных устройств. попробуйте изменить его. –

ответ

1

Используйте WebView свойства, как

<WebView 
       android:id="@+id/content" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" /> 

После того, как вы закончите с этим следующая вещь, которую вы должны видеть в том, что веб-сайт, который вы пытаетесь получить контент в WebView отзывчив или не означает, что независимо от его работы на все экраны в ясном и точном resolution.if нет, то вы должны сделать сайт Отзывчивого вам, что в WebView с, как, например

@media (min:320px , max:568px){ Css Body}

+0

fill_parent работа сейчас, но она не реагирует, как я могу определить размер, поскольку каждый мобильный телефон имеет свои пиксели? спасибо – user3538235

+0

, в то время как вы используете файл CSS, вы должны сделать сайт отзывчивым, я думаю, что всего 7 экранов в целом или если веб-сайт специально для мобильных телефонов, то только 4 экрана. если вы создали сайт в процентах, то довольно легко сделать 4 экрана в час. иначе я бы взял более 2 часов в px –

+0

, вы должны проверить чувствительные экраны для мобильных телефонов –

0

Пожалуйста, добавьте ниже кода я n файл манифеста:

<supports-screens android:smallScreens="true" 
    android:normalScreens="true" android:largeScreens="true" 
    android:anyDensity="true" /> 
Смежные вопросы