2017-05-27 16 views
7

Android webview'da çalışmak için yakınlaştırmak için yakınlaştırma tuşlarını kullanarak zoom kontrolleri yapmaya çalışıyorum. Büyük ölçüde this SO referans. Şu anda bu onCreate yönteminde kuruluyor varAndroid Webview uygulamasında Yakınlaştırma ve Sıkıştırma Kontrollerini Etkinleştir

:

this._webView.getSettings().setBuiltInZoomControls(true); 
this._webView.getSettings().setDisplayZoomControls(true); 
this._webView.getSettings().setSupportZoom(true); 

Ama hiçbir şey göründüğü ve Yakınlaştırma denetimleri görünmüyor. Ayrıca setSupportZoom denedim ama bu yardımcı olmadı.

Bildiğim kadarıyla benim webview bir kaydırma görünümünde sarılmış değil ama Web görünümü bir alt sınıfıdır söyleyebilirim:

class MyWebView extends WebView { 
     public MyWebView(Context context) { 
      super(context); 
     } 

     @Override 
     public void goBack() { 

      super.goBack(); 
     } 

    } 

Yani ben böyle yaratma sonunda:

if (this._webView == null) { 
      this._webView = new MyWebView(this); 
      this._webView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 
      this._webView.getSettings().setJavaScriptEnabled(true); 
      this._webView.setWebChromeClient(new WebChromeClient()); 
      this._webView.setWebViewClient(new WebViewClient()); 
      this._webView.getSettings().setBuiltInZoomControls(true); 
      this._webView.getSettings().setDisplayZoomControls(true); 
      this._webView.getSettings().setSupportZoom(true); 
      this._webView.loadUrl(this._baseUrl); 
     } 

Yanlış olduğum herhangi bir fikir var mı?

Teşekkürler!

DÜZENLEME: generateLayout yılında

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(1); 
    getWindow().setFlags(1024, 1024); 

    RelativeLayout my_layout = generateLayout(); 

    initUI(); 

    setContentView(my_layout); 
} 

biz ilk düzen oluşturmak ve Web görünümü için tutucu oluşturun::

private RelativeLayout generateLayout() { 
    RelativeLayout my_layout = new RelativeLayout(this); 
    my_layout.setId(this.generateViewId()); 
    my_layout.setLayoutParams(new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.MATCH_PARENT, 
      RelativeLayout.LayoutParams.MATCH_PARENT)); 

    ... more layout stuff 

    FrameLayout webViewPlaceholder = new FrameLayout(this); 
    this._webViewPlaceholder = webViewPlaceholder; 
    webViewPlaceholder.setId(this.generateViewId()); 
    webViewPlaceholder.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); 
    RelativeLayout.LayoutParams webViewPlaceholderLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); 
    webViewPlaceholderLayoutParams.addRule(RelativeLayout.BELOW, rlHeader.getId()); 
    webViewPlaceholder.setLayoutParams(webViewPlaceholderLayoutParams); 

    my_layout.addView(webViewPlaceholder); 
} 

Sonra initUI yılında yarattığımız onCreate yılında

Bunu webViewSunucu:

@SuppressLint({"SetJavaScriptEnabled"}) 
protected void initUI() { 
    if (this._webView == null) { 
     this._webView = new MyWebView(this); 
     this._webView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 
     this._webView.getSettings().setJavaScriptEnabled(true); 
     this._webView.setWebChromeClient(new WebChromeClient()); 
     this._webView.setWebViewClient(new WebViewClient()); 

     this._webView.getSettings().setSupportZoom(true); 
     this._webView.getSettings().setBuiltInZoomControls(true); 
     this._webView.getSettings().setDisplayZoomControls(true); 

     this._webView.loadUrl(this._baseUrl); 

    } else { 
     if (this._webView.getProgress() >= 100) { 
      this._progressIndicatorView.setVisibility(View.INVISIBLE); 
     } 
     setNavigationButtonsState(); 
    } 
    this._webViewPlaceholder.addView(this._webView); 
} 
+0

Web görünümüne referans almıyorsunuzdur. Web görünümünü dinamik olarak oluşturulmayan bir düzen görünümü olarak kullanmaya çalışın –

+0

"this._webView" öğesini düzeninize ekler misiniz? RootView, web görünümünü düzenine eklemelidir. – cole

+0

"RelativeLayout" ana menüsüne bir 'FrameLayout' ekledim ve 'this._webView' öğesini buna ekledim. Ana düzen programlı olarak oluşturulur. Kodu görmek istiyor musun? –

cevap

1

burada kodum var,

public class PdfViewActivity extends AppCompatActivity { 

      private Toolbar mToolbar; 
      private TextView mTxtTitleToolbar; 
      private WebView mWebViewPdf; 
      private String strUrl; 

      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_pdf_view); 
       Intent intent = getIntent(); 
       strUrl = intent.getStringExtra("strUrl"); 
       setUI(); 
      } 

      private void setUI() { 
       mWebViewPdf = (WebView) findViewById(R.id.webview); 
       mToolbar = (Toolbar) findViewById(R.id.toolbar); 
       setSupportActionBar(mToolbar); 
       getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
       getSupportActionBar().setHomeButtonEnabled(true); 
       mTxtTitleToolbar = (TextView) findViewById(R.id.text_toolbar); 
       mTxtTitleToolbar.setText("PDF"); 
       mToolbar.setNavigationOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         finish(); 
        } 
       }); 
       loadWebView(); 
      } 


      public void loadWebView() { 
       mWebViewPdf.setWebViewClient(new myWebClient()); 
       mWebViewPdf.getSettings().setJavaScriptEnabled(true); 
       mWebViewPdf.getSettings().setLoadWithOverviewMode(true); 
       mWebViewPdf.getSettings().setUseWideViewPort(true); 
       mWebViewPdf.getSettings().setBuiltInZoomControls(true); 
       mWebViewPdf.getSettings().setDisplayZoomControls(false); 
       mWebViewPdf.loadUrl("http://docs.google.com/gview?embedded=true&url=" 
+ strUrl.trim()); 
      } 

      public class myWebClient extends WebViewClient { 
       @Override 
       public void onPageStarted(WebView view, String url, Bitmap favicon) { 
        super.onPageStarted(view, url, favicon); 
       } 

       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        view.loadUrl(url); 
        return true; 
       } 

       @Override 
       public void onPageFini`enter code here`shed(WebView view, String url) { 
        super.onPageFinished(view, url); 
       } 
      } 
     } 

xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:foo="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:id="@+id/rel_product_detail" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="@color/color_Black" 
      app:contentInsetStart="@dimen/d_0" 
      app:popupTheme="@style/AppTheme.PopupOverlay" 
      app:theme="@style/AppTheme.AppBarOverlay"> 

      <customview.CustomTextView 
       android:id="@+id/text_toolbar" 
       style="@style/TitleTextView" 
       android:paddingRight="@dimen/d_40" 
       foo:FontEnum="light" /> 

     </android.support.v7.widget.Toolbar> 

    </RelativeLayout> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/rel_product_detail" 
     android:cacheColorHint="@color/transparent" 
     android:fillViewport="true" 
     android:scrollbars="none"> 

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

    </ScrollView> </RelativeLayout> 
0

Kodu aşağıdan deneyin.

this._webView.getSettings().setBuiltInZoomControls(true); 
this._webView.getSettings().setDisplayZoomControls(true); 
0

sizin initUI sonra set içerik görünümü diyoruz. Bununla ilgili herhangi bir şey yapmadan önce düzeninize bir başvuru yapmanız gerekir. düzeninizi generateLayout() içinde oluşturuyorsanız, web görünümü ayarlarınızda çalışmaya başlamadan önce ayarlamanız gerekir.

İlgili konular