我想检查我的网页浏览是否向下滚动

时间:2017-04-08 09:54:17

标签: android android-studio webview

我的应用程序中有 WebView Fragment,我想查看,用户滚动 WebView 或不是,例如,如果用户向下滚动我的 WebView ,我想要显示一条Toast消息" 您滚动了向下"我在过去的3天里尝试过这个,但我没有得到任何正确的解决方案。我见过很多教程和讨论,其中没有一个对我有用。有没有人可以提供帮助?

  

这是我的片段java代码

public class tab1 extends Fragment {

 public ProgressBar bar;
 public FrameLayout frameLayout;
 public tab1()
 {

 }

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
     View rootView = inflater.inflate(R.layout.fragment_tab1, null);

     final SwipeRefreshLayout swipe =(SwipeRefreshLayout)rootView.findViewById(R.id.swiperefresh1);
     frameLayout=(FrameLayout) rootView.findViewById(R.id.frame1);
     bar=(ProgressBar)rootView.findViewById(R.id.progressBar1);
     final WebView view=(WebView) rootView.findViewById(R.id.webview);

     bar.setMax(100);
     view.loadUrl("http://facebook.com");
     view.getSettings().setJavaScriptEnabled(true);
     view.setWebViewClient(new MyWebViewClient());
     view.setWebChromeClient(new WebChromeClient(){

         public void onProgressChanged(WebView view1,int progress){

            frameLayout.setVisibility(View.VISIBLE);
            bar.setProgress(progress);
            if (progress==100){

            frameLayout.setVisibility(View.GONE);
                swipe.setRefreshing(false);
            }

      super.onProgressChanged(view1,progress);
        }
    });

    view.getSettings().setBuiltInZoomControls(true);
    view.getSettings().setDisplayZoomControls(false);
    bar.setProgress(0);

 swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {

            swipe.setColorSchemeResources(
                    R.color.pink, R.color.indigo, R.color.lime);

            String webUrl = view.getUrl();

           view.loadUrl(webUrl);
        }
 });
    return rootView;
}
}
  

这是我的xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="com.hackerinside.jaisonjoseph.polysocial.tab1">

<FrameLayout
    android:id="@+id/frame1"
    android:layout_width="match_parent"
    android:layout_height="3dp"
    android:background="@android:color/transparent">

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="3dp"
        android:background="@android:color/transparent"
       android:foregroundGravity="top"
        android:progressDrawable="@drawable/custom_progress"
        android:progress="20"/>

</FrameLayout>


<android.support.v4.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swiperefresh1"
    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" >

</WebView>

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

  

添加答案后的错误消息

Cast from null to OnScrollChangeListener requires API level 23 (current min is 15) less... (Ctrl+F1) 

此检查会扫描应用程序中的所有Android API次调用,并警告此应用程序所定位的所有版本上未提供的任何调用(根据其最小SDK属性在清单中)。如果您确实想要使用此API并且不需要支持较旧的设备,只需在minSdkVersionbuild.gradle文件中设置AndroidManifest.xml即可。如果您的代码故意访问较新的APIs,并且您已确保(例如,通过条件执行)此代码将仅在受支持的平台上调用,那么您可以使用{{1}注释您的类或方法}注释指定要应用的本地最小@TargetApi,例如SDK,以便此检查考虑11而不是您的清单文件的最小@TargetApi(11)作为必需SDK水平。如果您故意在样式定义中设置android:属性,请确保将其放在API文件夹中,以避免在制造商添加了自定义属性的某些设备上遇到运行时冲突,这些属性的ID与新的属性冲突以后的平台。同样,您可以在values-vNN文件中使用tools:targetApi="11"来表示该元素只会在适当的上下文中膨胀

1 个答案:

答案 0 :(得分:1)

好吧试试这个

view.setOnScrollChangeListener(new View.OnScrollChangeListener() {
        @Override
        public void onScrollChange(View v, int scrollX, int scrollY, int 
      oldScrollX, int oldScrollY) {

        }
    });

此处视图是您的WebView对象。 :)它的原生方法,所以它会正常工作。