我的应用程序中有一个WebView
片段
,我想检查一下,用户是否向下滚动了WebView
,例如,如果用户向下滚动了我的WebView
,我想显示一条Toast
消息,“you scrolled down”我在过去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
并且不需要支持旧的设备,只需在你的build.gradle
或Androidanifest.xml
文件中设置minSdkVersion
。如果您的代码有意访问较新的API
,并且您已经确保(例如使用条件执行)此代码仅在受支持的平台上被调用,那么您可以使用@TargetApi
注释注释您的类或方法指定要应用的本地最小SDK
,例如@TargetApi(11)
,以便此检查将11而不是清单文件的最小SDK
视为所需的API
级别。如果你故意在样式定义中设置android:属性,请确保将其放在value s-vNN
文件夹中,以避免在某些设备上遇到运行时冲突,制造商在这些设备上添加了自定义属性,这些属性的id与以后的新属性冲突平台。类似地,您可以在一个XML
文件中使用工具: Target etApi="11"
来指示元素只会在适当的上下文中膨胀
好的,试试这个
view.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int
oldScrollX, int oldScrollY) {
}
});
这里的视图是您的WebView对象。:)它的本地方法,所以它会很好地工作。
如果我遇到静态编程语言类而不是泛型Java类,我想执行特殊功能。如何检测它是否是静态编程语言类? 我希望调用会引发异常或失败,如果类不是科特林。但它很好地包装了Java类。然后我注意到,如果我做,它似乎对所有java类的,即使它们有一个默认的构造函数,这是一个好的标记吗?但是,对于科特林类,这是否也返回值? 说“这是静态编程语言课吗?
问题内容: 我正在学习如何使用TableViews,并且想知道如何查看tableView是向上滚动还是向下滚动?我一直在尝试诸如此类的各种操作,但由于下面是针对滚动视图的操作,并且没有TableView,因此它没有用。任何建议都会很棒,因为我是新来的… 这就是我的tableView代码中的内容 问题答案: 就像@maddy在您的问题评论中说的那样,您可以使用和来检查是否正在滚动,此外,您可以同时使
问题内容: 在Python中,有没有办法来检测是否给定 的网络接口 是 向上 ? 在我的脚本中,用户指定了一个网络接口,但在执行其他操作之前,我想确保该接口已启动并且已分配IP地址。 我在 Linux上 并且我是 root 。 问题答案: 如@Gabriel Samfira所建议,我使用。当IP地址与给定接口关联时,以下函数返回True。 文档在这里
我有一个动态填充的RecyclerView。 当新消息到达时,我使用此代码向下滚动到最后一个条目: 现在的问题是:如果用户已经向上滚动阅读旧消息,它不应该向下滚动。怎么才能检测出来?
问题内容: 在此之前,我的滚动视图下面几乎有一个值得滚动的页面,下面有一个列表视图,但是一旦填充了列表视图,滚动视图就会移到列表视图的顶部。我该如何解决/防止这种情况发生? 滚动查看XML: 我试着做sv.fullScroll(ScrollView.FOCUS_UP); 和所有这些东西到我的scrollview,但它不起作用 问题答案: 首先,您可能已经听说过它,但以防万一: 切勿在内部放一个,因
php是否允许您检查网络驱动器是否映射。基本上,在所有计算机上,我们的g:\drive都是映射的。是否可以使用php脚本来检查是否映射了G:\驱动器?为了从映射的驱动器访问目录和文件,我使用UNC名称。 非常感谢帮助