2017-05-27 9 views
7

में ज़ूम और पिंच नियंत्रण सक्षम करें मैं एक एंड्रॉइड वेबव्यू में काम करने के लिए ज़ूम करने के लिए चुटकी के साथ प्रदर्शित करने के लिए ज़ूम नियंत्रण प्राप्त करने का प्रयास कर रहा हूं। बड़े पैमाने पर संदर्भ this SOएंड्रॉइड वेबव्यू

अभी मैं इन onCreate विधि में स्थापित किया जा रहा है:

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

लेकिन कुछ भी नहीं दिखाई देता है और ज़ूम नियंत्रण प्रकट नहीं होते। मैंने setSupportZoom के बिना भी कोशिश की है लेकिन यह मदद नहीं प्रतीत होता है।

जहां तक ​​मेरा बताऊं कि मेरा वेबव्यू एक स्क्रॉल दृश्य में लिपटे नहीं है लेकिन यह वेब-दृश्य का एक उपवर्ग है:

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

     @Override 
     public void goBack() { 

      super.goBack(); 
     } 

    } 

तो मैं इस तरह इसे बनाने अंत:

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); 
     } 

कोई विचार जहां मैं गलत जा रहा हूँ?

धन्यवाद!

संपादित करें:

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

    RelativeLayout my_layout = generateLayout(); 

    initUI(); 

    setContentView(my_layout); 
} 

generateLayout हम प्रारंभिक लेआउट बना सकते हैं और WebView के लिए धारक बनाने:

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); 
} 

फिर initUI में हम बना

onCreate में मैं यह कर वेब स्वयं ही देखें:

@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

मुझे लगता है कि आपको वेबदृश्य का संदर्भ नहीं मिल रहा है। वेबदृश्य को लेआउट व्यू के रूप में उपयोग करने का प्रयास करें, गतिशील रूप से –

+0

नहीं बनाया है क्या आप अपने लेआउट में 'this._webView' जोड़ते हैं? रूटव्यू को अपने लेआउट में वेबव्यू जोड़ना चाहिए। – cole

+0

मैं मुख्य 'रिलेवेटिवआउट' में 'फ्रेमलेआउट' जोड़ता हूं और उसके बाद 'this._webView' जोड़ता हूं। मुख्य लेआउट प्रोग्रामेटिक रूप से बनाया गया है। क्या आप कोड देखना चाहते हैं? –

उत्तर

1

यहाँ मेरी कोड है,

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); 
       } 
      } 
     } 

एक्सएमएल

<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

कोड नीचे आज़माएं।

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

अपने initUI बाद सेट सामग्री दृश्य कहते हैं। इससे पहले कि आप इसके साथ कुछ भी कर सकें, आपको अपने लेआउट का संदर्भ प्राप्त करने की आवश्यकता है। आप GenerLayout() में अपना लेआउट बना रहे हैं, आपको अपनी वेब दृश्य सेटिंग्स पर काम करने से पहले इसे सेट करने की आवश्यकता है।

संबंधित मुद्दे