2012-02-22 19 views
8

मैं स्क्रॉल का उपयोग करने की कोशिश कर रहा हूं वेबव्यू की विधि। यह वेब लेआउट के लिए मेरी लेआउट फ़ाइल है।वेबव्यू स्क्रॉल करने के लिए काम नहीं कर रहा है

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
> 
<WebView 
    android:id="@+id/webMap" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
/> 
</LinearLayout> 

मुझे क्या करना html फ़ाइल (जो केवल एक नक्शा छवि है) दिखा रहा है कोशिश कर रहा हूँ और साथ छवि पर निश्चित क्षेत्र में स्क्रॉल:

mapWebView.loadUrl("file:///android_asset/maps/map.html"); 
mapWebView.scrollTo(300, 300); 

लेकिन जब वेबव्यू यह भरी हुई है हमेशा छवि के (0, 0) दिखाता है।

scrollTo() के साथ समस्या क्या है?

+0

@ http://stackoverflow.com/questions/22737412/android-webview-scrollto-is-not-working/22920457#22920457 –

उत्तर

16

मुझे संदेह है कि mapWebView.loadUrl("file:///android_asset/maps/map.html"); असीमित है, इसलिए mapWebView.scrollTo(300, 300); वेबव्यू लोड होने से पहले निष्पादित हो गया है। एक बार पृष्ठ लोड हो जाने पर यह आपके द्वारा लागू स्क्रॉल सेटिंग खो देगा और शीर्ष पर रीसेट हो जाएगा।

mapWebView.setWebViewClient(new WebViewClient(){ 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      // TODO Auto-generated method stub 
      super.onPageFinished(view, url); 
      mapWebView.scrollTo(300, 300); 
     } 

    } 
    ); 

आशा इस मदद करता है

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

आप पृष्ठ लोड करने के लिए में सुनने के लिए और फिर इसे स्क्रॉल की जरूरत है बाहर कर देता है यह अविश्वसनीय है, बजाय इसका उपयोग:

mapWebView.setPictureListener(new PictureListener() { 

     @Override 
     public void onNewPicture(WebView view, Picture picture) { 
      mapWebView.scrollTo(300, 300); 

     } 
    }); 
+0

जवाब डीन के लिए धन्यवाद एक नजर डालें। मैंने यह भी कोशिश की, लेकिन अभी भी काम नहीं कर रहा है। हालांकि, स्क्रॉल करने के बाद() मैंने getScrollX() और getScrollY() को यह देखने के लिए कहा कि वे क्या लौटते हैं और यह (300, 300) है। लेकिन छवि अभी भी (0, 0) पर है। – penguru

+0

मेरे द्वारा पोस्ट किए गए दूसरे कोड को आज़माएं, ऐसा लगता है कि पृष्ठ लोड होने से पहले कभी-कभी समाप्त होने वाली लोडिंग विधि को वास्तव में लोड किया जाता है, विशेष रूप से यदि आपके पास छवियां हैं जो आप करते हैं –

+2

धन्यवाद डीन, सेट पिक्चरलिस्टर महान काम करता है! – penguru

1

इसे आज़माएं ..:

try { 
webview.setWebChromeClient(new WebChromeClient() { 

    @Override 
    public void onProgressChanged(WebView view, 
      int newProgress) { 

     if (newProgress >= 100) { 

      webview.scrollTo(x,y); 
     } 

     super.onProgressChanged(view, newProgress); 
    }; 

}); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
0

निम्नलिखित ओवरराइड मेरे लिए बेहतर काम करता है।

protected void onLayout(boolean changed, int l, int t, int r, int b) { 
// set initial scroll to 
scrollTo(yourXpos,yourYpos); 
super.onLayout(changed, l, t, r, b); 
} 
संबंधित मुद्दे