我很难让Webview同时滚动。一种Web视图有效,而另一种则无效。它们之一将不能同时工作。我希望有人能够提供帮助。我希望能够滚动任一webview并使其更改另一个。
private WebView englishWebView;
private WebView koreanWebView;
Button windowImageView;
Button windowImageViewKorean;
int counter = 0;
int scrollXEnglish;
int scrollYEnglish;
int scrollXKorean;
int scrollYKorean;
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);View decorView = getWindow().getDecorView();
setContentView(R.layout.activity_main);
//information for Korean part
koreanWebView = findViewById(R.id.korean_web_view);
koreanWebView.setWebViewClient(new WebViewClient());
koreanWebView.getSettings().setJavaScriptEnabled(true);
koreanWebView.getSettings().setDomStorageEnabled(true);
koreanWebView.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
koreanWebView.loadUrl("https://m.comic.naver.com/webtoon/detail.nhn?titleId=183559&no=1&week=mon");
//information for English window
englishWebView = findViewById(R.id.english_web_view);
englishWebView.setWebViewClient(new WebViewClient());
englishWebView.getSettings().setJavaScriptEnabled(true);
englishWebView.getSettings().setDomStorageEnabled(true);
englishWebView.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
englishWebView.loadUrl("https://www.webtoons.com/en/fantasy/tower-of-god/season-1-ep-0/viewer?title_no=95&episode_no=1");
englishWebView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
scrollXEnglish = englishWebView.getScrollX(); // for horizontalScrollView
scrollYEnglish = englishWebView.getScrollY(); // for verticalScrollView
// DO SOMETHING WITH THE SCROLL COORDINATES
koreanWebView.scrollTo(scrollXEnglish, scrollYEnglish);
}
});
koreanWebView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
scrollXKorean = koreanWebView.getScrollX();
scrollYKorean = koreanWebView.getScrollY();
// DO SOMETHING WITH THE SCROLL COORDINATES
englishWebView.scrollTo(scrollXKorean, scrollYKorean);
}
});
}
}
答案 0 :(得分:0)
所以...。我终于找到了答案。我看起来像这样。
我使用了可观察到的网络视图found here.
然后,我必须添加MotionTouch事件,以便它不会创建调用侦听器的循环。
koreanWebView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
koreanWebViewTouched = true;
englishWebViewTouched = false;
// Do what you want
return true;
}
return false;
}
});
englishWebView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
koreanWebViewTouched = false;
englishWebViewTouched = true;
// Do what you want
return true;
}
return false;
}
});
koreanWebView.setOnScrollChangedCallback(new ObservableWebView.OnScrollChangedCallback(){
public void onScroll(int l, int t){
if (koreanWebViewTouched){
englishWebView.scrollTo(0, t);
//Do stuff
Log.d("did","We Scrolled etc...");
}}
});
englishWebView.setOnScrollChangedCallback(new ObservableWebView.OnScrollChangedCallback(){
public void onScroll(int l, int t){
// t = scrollYKorean;
if (englishWebViewTouched){
koreanWebView.scrollTo(0, t);
//Do stuff
Log.d("did","We Scrolled etc...");}
}
});
它工作得很好,但是没有它,它不如滚动的平滑。我认为是因为它无法正常运行,但可以解决该问题并在以后解决。