2014-09-26 2 views
0

webview가 있습니다. 스크롤을 사용 중지했습니다. 그리고 그것은 안드로이드 전화 화면 크기의 너비와 동일합니다.Android webview 콘텐츠가 webview를 초과합니다

문제는 웹보기의 콘텐츠가 자동 크기 조정이 아니라 웹보기 외부에 표시된다는 것입니다 (스크롤을 사용 중지했지만 웹보기 크기가 화면 너비와 정확히 일치하지 않음).

이미

newsContent.getSettings().setUseWideViewPort(true); 
    newsContent.getSettings().setLoadWithOverviewMode(true); 

<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0'> 

을 추가하지만 여전히 작동하지. 감사.

enter image description here

웹보기의 XML :

 <WebView 
      android:id="@+id/newsContent" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="5dp" 
      android:background="#ffffff" /> 

웹보기 JAVA :

StringBuilder sb = new StringBuilder(); 
    sb.append("<HTML><HEAD><meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0'><LINK href=\"news.css\" type=\"text/css\" rel=\"stylesheet\"/><script src=\"jquery-1.10.2.js\" type=\"text/javascript\"></script></HEAD><body>"); 
    sb.append(newsItem.description.toString()); 
    sb.append("<script>$('img').on('click', function() {app.zoom($(this).attr('src'));});</script></body></HTML>"); 

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){ 
     newsContent.getSettings().setAllowUniversalAccessFromFileURLs(true); 
     newsContent.getSettings().setAllowFileAccessFromFileURLs(true); 
    } 

    newsContent.setWebChromeClient(new WebChromeClient()); 
    newsContent.setWebViewClient(new WebViewClient()); 

    newsContent.getSettings().setUseWideViewPort(true); 
    newsContent.getSettings().setLoadWithOverviewMode(true); 

    newsContent.getSettings().setJavaScriptEnabled(true); 
    newsContent.addJavascriptInterface(new WebViewJavaScriptInterface(), "app"); 

    newsContent.loadDataWithBaseURL("file:///android_asset/", sb.toString(), "text/html", "utf-8", null); 

    newsContent.setOnTouchListener(new View.OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      return (event.getAction() == MotionEvent.ACTION_MOVE); 
     } 
    }); 

    newsContent.setVerticalScrollBarEnabled(false); 
    newsContent.setHorizontalScrollBarEnabled(false); 
이 이
+0

'웹뷰처럼 작동 테스트 알고 일부 사이트에 웹보기를 retargeitng 제안 .setLayerType (View.LAYER_TYPE_SOFTWARE, null); ' –

+0

뷰가 너무 커서 도면 캐시에 적합하지 않습니다. ds 7890400 바이트, 3686400 만 사용 가능 – user782104

+0

'webview.setDrawingCacheEnabled (false); –

답변

1

당신은 내가 구현하기 때문에 특별한 뭔가를하고있는 것 같다 내 전나무 중 하나로 문제가없는 webview 한 달 전에 안드로이드 프로젝트.

  • 체크 XML 높이의 URL 사이트 자체가 펑키 뭔가를 할 수있는 설정이 아니라고 웹보기 위의 폭과 레이아웃 유형

  • 확인하시기 바랍니다. webview가 정확할 수 있습니다. 난 당신이 내 텀블러 블로그 URL http://sprocketblog.tumblr.com

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     tools:context=".HomeFeed" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 

<WebView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/webview" > 
    </WebView> 
</RelativeLayout> 

JAVA

public class NewsFeed extends Activity { 

private WebView mWebView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home_feed); 

    mWebView = (WebView) this.findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.loadUrl("http://sprocketblog.tumblr.com"); 
    mWebView.setWebViewClient(new TumblrWebViewClient()); 

    if (savedInstanceState == null) 
} 

//Keeps user in webview on multiple taps without shooting off to Chrome 
private class TumblrWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView webview, String url) { 
     webview.loadUrl(url); 
     return true; 
    } 
//On error shows HTML resource 
    @Override 
    public void onReceivedError (WebView view, int errorCode, String description, String failingUrl) { 
     mWebView.loadUrl("file:///android_asset/networkerror.html"); 
    } 


} 

//Binds OS back button to webview 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    // Check if the key event was the Back button and if there's history 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
     mWebView.goBack(); 
     return true; 
    } 
    // If it wasn't the Back key or there's no web page history, bubble up to the default 
    // system behavior (probably exit the activity) 
    return super.onKeyDown(keyCode, event); 
} 

}

-1

당신의 XML 레이아웃에서 사용 android:layout_width="wrap_content"

+0

답장을 보내 주셔서 감사합니다. 좀 더 구체적으로 말씀 해주시겠습니까? 상위 레이아웃/webview/다른 레이아웃으로 설정 하시겠습니까? – user782104

+0

webview 레이아웃. –

+0

이유를 설명하기 위해 의견이없는 투표를 한 이유는 무엇입니까? 나는이 행동이 공동체에서 정말로 쓸모 없다고 생각한다. –

관련 문제