5

NestedScrollView के अंदर WebView का उपयोग करते समय कुछ समस्याएं हैं। मुख्य बात यह है कि मैं लड़ रहा हूं कि साइटें जो स्क्रॉल करते समय अधिक सामग्री लोड करती हैं, अच्छी तरह से काम नहीं करती हैं, उदाहरण के लिए vimeo.com। दृश्य को LAYER_TYPE_HARDWARE पर भी सेट करना काम नहीं करता है, शायद इसी कारण से, यह मूल रूप से ऊंचाई के कारण दुर्घटनाग्रस्त हो जाता है। तो, क्या NestedScrollView का कोई विकल्प है यदि मैं WebView के अंदर स्क्रॉल करते समय टूलबार को संक्षिप्त करने के लिए CoordinatorLayout का उपयोग करना चाहता हूं?क्या वेबव्यू के उपयोग के लिए NestedScrollView का कोई विकल्प है?

मेरा कोड नीचे है। समस्या को पुन: उत्पन्न करने के लिए बस vimeo.com लोड करें और नीचे स्क्रॉल करें।

activity_scrolling.xml

<android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/app_bar_height" 
     android:fitsSystemWindows="true" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/toolbar_layout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/AppTheme.PopupOverlay"/> 

     </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.widget.NestedScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     tools:context="com.webviewnestedscroll.ScrollingActivity" 
     tools:showIn="@layout/activity_scrolling"> 

     <WebView 
      android:id="@+id/webview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"></WebView> 
    </android.support.v4.widget.NestedScrollView> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/fab_margin" 
     android:src="@android:drawable/ic_dialog_email" 
     app:layout_anchor="@id/app_bar" 
     app:layout_anchorGravity="bottom|end"/> 

</android.support.design.widget.CoordinatorLayout> 

ScrollingActivity.java

package com.webviewnestedscroll; 

import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class ScrollingActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_scrolling); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
     WebView view = (WebView) findViewById(R.id.webview); 
     view.setWebViewClient(new WebViewClient()); 
     WebSettings settings = view.getSettings(); 
     settings.setJavaScriptEnabled(true); 
     settings.setAllowContentAccess(true); 
     settings.setAppCacheEnabled(true); 
     settings.setDatabaseEnabled(true); 
     settings.setDomStorageEnabled(true); 
     settings.setRenderPriority(WebSettings.RenderPriority.HIGH); 
     settings.setJavaScriptEnabled(true); 
     settings.setSupportZoom(true); 
     settings.setJavaScriptCanOpenWindowsAutomatically(true); 
     settings.setBuiltInZoomControls(true); 
     settings.setAppCacheEnabled(true); 
     settings.setAppCachePath(getCacheDir().getAbsolutePath()); 
     settings.setDatabaseEnabled(true); 
     settings.setSupportMultipleWindows(true); 
     settings.setLoadWithOverviewMode(true); 
     settings.setUseWideViewPort(true); 
     settings.setDomStorageEnabled(true); 
     settings.setAllowContentAccess(true); 
     settings.setAllowFileAccess(true); 
     settings.setSaveFormData(true); 
     //view.setLayerType(View.LAYER_TYPE_HARDWARE, null); 

     view.loadUrl("http://vimeo.com"); 



    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_scrolling, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

संपादित करें: उल्लेख करने के लिए, मैं पहले से ही चारों ओर लपेटकर कोशिश की है भूल एक FrameLayout, LinearLayout, RelativeLayout, आदि मैं मैंने आकार को एक विशिष्ट संख्या में सेट करने का भी प्रयास किया है।

+0

यह समर्थन लाइब्रेरी में एक बग जैसा दिखता है। Google को रिपोर्ट करने के लायक –

+0

मैंने इसे पहले ही रिपोर्ट किया है लेकिन कुछ भी नहीं सुना है और मैंने शून्य टिप्पणियों या स्वीकृति के साथ बहुत सी सहायता लाइब्रेरी वेबव्यू संबंधित बग देखी है, इसलिए मैं बस एक विकल्प खोजने की कोशिश कर रहा हूं। – casolorz

+0

मुझे लगता है कि एक कस्टम NestScrollWebView होना चाहिए, NestedScrollView और WebView नहीं। –

उत्तर

0

के रूप में मैं referred, आप की तरह android:descendantFocusability="blocksDescendants" साथ LinearLayout जोड़ने के लिए प्रयास करना चाहिए:

<android.support.v4.widget.NestedScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     tools:context="com.webviewnestedscroll.ScrollingActivity" 
     tools:showIn="@layout/activity_scrolling"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:descendantFocusability="blocksDescendants" > 

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

     </LinearLayout> 
</android.support.v4.widget.NestedScrollView> 

मई यह आपके लिए उपयोगी साबित होगा। धन्यवाद।

+0

धन्यवाद लेकिन यह एक ही समस्या है। यदि मैं vimeo.com पर नीचे तक सभी तरह से जाता हूं तो पेज को एहसास नहीं होता कि मैं नीचे से नीचे चला गया हूं और नीचे एक सफेद जगह भी है। – casolorz

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