我在扩展WebView的类中尝试了sra's workaround。不幸的是,我仍然看到这个错误。
我通过将Log.i(...)弹出到MyWebView.java来验证我实际上正在使用MyWebView:
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN){
Log.d("DEBUG ::: ", "in onTouchEvent() ---> ACTION_DOWN");
int temp_ScrollY = getScrollY();
scrollTo(getScrollX(), getScrollY() + 1);
scrollTo(getScrollX(), temp_ScrollY);
}
return super.onTouchEvent(event);
}
我看到" DEBUG :::" ...等...每次刷卡所以我知道MyWebView正在使用而不是WebView本身。有趣的是,我只能得到"不应该发生:没有找到基于矩形的测试节点"向右滑动>向左滑动消息(滑动页面1-N)。当我向左滑动>向右滑动页面N-1时,我看不到错误。
我的片段.xml中的MyWebView:
<com.example.viewpager2.MyWebView
android:id="@+id/webView2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true">
</com.example.viewpager2.MyWebView>
和MyWebView.java:
package com.example.viewpager2;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.webkit.WebView;
public class MyWebView extends WebView {
public MyWebView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public MyWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN){
Log.d("DEBUG ::: ", "in onTouchEvent() ---> ACTION_DOWN");
int temp_ScrollY = getScrollY();
scrollTo(getScrollX(), getScrollY() + 1);
scrollTo(getScrollX(), temp_ScrollY);
}
return super.onTouchEvent(event);
}
}
并不是说sra在任何方面都是错误的,但如果我做错了什么,我很乐意纠正它! sra的解决方案似乎是一个小说,我希望它对我有用。 : - (
顺便说一下,无论是在Nexus 7模拟器中还是在我的Nook Tab w / CM10.1上,我都会看到此错误
编辑,2013-03-29 :我昨晚和今天早上做了一些挖掘工作,主要是因为经过一些更多的屏幕触摸和模拟器,我发现[sra&#39; s解决方法]有时为我工作,但并不总是为Right-&gt;左(滑动页面1-N)。我发现在我的Nook Tab上解决方法比在Nexus 7仿真器上更频繁地工作。
在我的onTouchEvent(...)
方法内部,首先在上面引用,我添加了另外两个Log.d(...),这一次告诉我getScrollX()
的值是什么:
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN){
Log.d("DEBUG ::: ", "in onTouchEvent() ---> ACTION_DOWN");
int temp_ScrollY = getScrollY();
int temp_ScrollX = getScrollX();
if(temp_ScrollX > 0) {
Log.d("RESET X COORD: WAS STARTING AT ", Integer.toString(temp_ScrollX));
setScrollX(0);
}
scrollTo(getScrollX(), getScrollY() + 1);
scrollTo(getScrollX(), temp_ScrollY);
Log.d(" DEBUG COORDS::: ", "X=" + Integer.toString(getScrollX()) + " Y=" + Integer.toString(getScrollY()) + " Y2=" + Integer.toString(temp_ScrollY));
}
return super.onTouchEvent(event);
}
在我的跟踪日志中,这产生了1-N的以下内容(如前所述,我从未看到任何针对N-1的基于矩形的测试):
03-29 06:54:32.976: E/webcoreglue(9475): Should not happen: no rect-based-test nodes found
03-29 06:54:33.335: D/DEBUG :::(9475): in onTouchEvent() ---> ACTION_DOWN
03-29 06:54:33.335: D/RESET X COORD: WAS STARTING AT(9475): 1949
03-29 06:54:33.335: D/DEBUG COORDS:::(9475): X=0 Y=10 Y2=10
03-29 06:54:33.734: D/DEBUG :::(9475): in onTouchEvent() ---> ACTION_DOWN
仔细检查一下,当我从Right-&gt; Left(1-N)中干净地滑动时,就好是当我在边框上滑动时,sra的解决方法总是作品。当我不准确地在边界上滑动时,sra的解决方法不起作用。当我使用模拟器时,可以通过较差的鼠标点击来解释更多常规故障,并且这些故障的发生频率比我使用触摸时更频繁。
所以我现在想的是 - 并且想知道这里是否有人有任何建议 - 如果我应该尝试处理某些事件而不是接触,那就是为什么我&#39我刷的时候看到这个问题了?