2016-09-08 19 views
1

私はアンドロイドが新しくなっています。現在、私はWebviewでSwipeRefreshLayoutを使用したいが、私は自分のwebviewでスクロールできません。スクロールするたびにSwipeRefreshLayoutイベントが発生します。どのような提案とステップ私はこれを避けることができますか?以下は私が参照しているサンプルコーディングです。ここでAndroid SwipeRefreshLayout webviewをスクロールダウンできない

は私の現在のレイアウトです:

<android.support.v4.widget.SwipeRefreshLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:id="@+id/swipe"> 


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


</android.support.v4.widget.SwipeRefreshLayout> 

そして、ここが私の活動が

package com.example.web3; 

import android.app.Activity; 
import android.os.Bundle; 
import android.support.v4.widget.SwipeRefreshLayout; 
import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.ViewTreeObserver; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.EditText; 
import android.widget.Toast; 


public class MainActivity extends Activity { 

     private WebView webView; 
     private SwipeRefreshLayout swipeRefresh; 

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

      //SwipeRefresh 
      swipeRefresh = (SwipeRefreshLayout)findViewById(R.id.swipe_contain); 
      swipeRefresh.setOnRefreshListener(new OnRefreshListener() { 
       @Override 
       public void onRefresh() { 

        webView.loadUrl(webView.getUrl()); 
       } 
      }); 
      swipeRefresh.setColorScheme(android.R.color.holo_blue_light, 
               android.R.color.holo_red_light, 
               android.R.color.holo_orange_light, 
               android.R.color.holo_green_light); 

      webView = (WebView)findViewById(R.id.web_show); 

      webView.loadUrl("http://192.168.0.28/sample/index.html"); 

      webView.getSettings().setJavaScriptEnabled(true); 

      webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 

      webView.requestFocus(); 

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

      webView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() { 
        @Override 
        public void onScrollChanged() { 
        if (webView.getScrollY() == 0) { 
         swipeRefresh.setEnabled(true); 
         } else { 
          swipeRefresh.setEnabled(false); 
         } 
        } 
       }); 



      webView.setWebChromeClient(new WebChromeClient(){ 
       @Override 
       public void onProgressChanged(WebView view, int newProgress) { 
        if(newProgress == 100){ 

         swipeRefresh.setRefreshing(false); 
        }else if(!swipeRefresh.isRefreshing()){ 
         swipeRefresh.setRefreshing(true); 

        } 
       } 
      }); 
     } 



} 
+0

ここ –

答えて

2

あり、これを試してみてください:

webView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() { 
     @Override 
     public void onScrollChanged() { 
      if (webView.getScrollY() == 0) { 
       swipeToRefresh.setEnabled(true); 
      } else { 
       swipeToRefresh.setEnabled(false); 
      } 
     } 
    }); 
+0

をあなたのレイアウトを入れて、私はすでにコードに追加けどSwipeRefreshLayoutによってまだリフレッシュされています。私はすでに私のコードを追加しました、それは私が間違って追加された方法ですか? –

+0

単にwebListやアクションの上にtouchlistenerを実装しようとする** swipeToRefresh.setEnabled(false); **とアクション上に** swipeToRefresh.setEnabled(true); ** –

関連する問題