在Android中使用2种不同的Webview同时滚动

时间:2018-11-04 14:06:18

标签: android

我很难让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);

        }
    });

}

}

1 个答案:

答案 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...");}
        }
    });

它工作得很好,但是没有它,它不如滚动的平滑。我认为是因为它无法正常运行,但可以解决该问题并在以后解决。