【发布时间】:2015-07-30 13:01:33
【问题描述】:
我有一个 SwipeRefreshLayout 视图作为父级。在它里面我使用了一个加载网页的webview。我想通过下拉 SwipeRefreshLayout 来重新加载 webview。这是我的xml:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v4.widget.SwipeRefreshLayout>
和java代码:
mWebView = (WebView) view.findViewById(R.id.webView);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("http://kashirskoe.vegas-city.ru/renter/");
mSwipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.refresh_layout);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
mSwipeRefreshLayout.setRefreshing(true);
mSwipeRefreshLayout.postDelayed(new Runnable() {
@Override
public void run() {
mWebView.reload();
mSwipeRefreshLayout.setRefreshing(false);
}
}, 1000);
}
});
乍一看,它很完美。但是当用户向下滚动时,例如网页上的地图控件,它不会滚动。而不是这个 SwipeRefreshLayout 拦截滚动和刷新网页(示例页面 url 在代码上)。
我想在页面上的任何 Web 控件滚动时禁用 SwipeRefreshLayout 滚动。就像它在浏览器 Google Chrome 中工作一样。
我认为我需要在 webview 中注入和执行 JavaScript,以便检测页面上任何滚动控件上的滚动事件。并将其传递给 android 本机代码。我知道如何将它传递给本机代码。
但是我怎样才能在 javascript 中检测到这个滚动事件呢?
【问题讨论】:
标签: javascript android webview swiperefreshlayout