Веб-просмотр как горизонтальный пейджер - Android - PullRequest
0 голосов
/ 09 мая 2019

Я попытался отобразить крупный HTML-контент в веб-просмотре с помощью горизонтальной прокрутки (вместо вертикальной прокрутки). Я сделал это с помощью следующего кода,

 private  void injectJavascript() {
    String js = "function initialize(){\n   " +
            " var d = document.getElementsByTagName('body')[0];\n  " +
            " var ourH = window.innerHeight -20;\n   " + // 20 px is a padding gap
            " var ourW = window.innerWidth -20;\n    " +
            " var fullH = d.offsetHeight;\n   " +
            " var pageCount = Math.floor(fullH/ourH)+1;\n   " +
            " var currentPage = 0;\n   " +
            " var newW = pageCount* window.innerWidth -20 ;\n   " +
            " d.style.height = ourH+'px';\n   " +
            " d.style.width = newW+'px';\n   " +
            " d.style.margin = 0;\n   " +
            " d.style.webkitColumnGap = '20px';\n   " +
            " d.style.webkitColumnCount = pageCount;\n   " +
            " document.head.innerHTML = document.head.innerHTML +" +
            " '<meta name=\"viewport\" content=\"height=device-height, user-scalable=no\" />';   " +
            " return pageCount;\n}";
    this.loadUrl("javascript:" + js);
    this.loadUrl("javascript:alert(initialize())");
}

Иногда выдает неверное количество страниц. Например: он возвращает 8 как количество страниц, но контенту нужно 9. Я пробовал также Math.ceil () .

Мне нужен дисплей ViewPager с использованием веб-просмотра . Я публикую этот вопрос после того, как попробую все приведенные решения в SO и на некоторых сайтах. Пожалуйста, помогите мне, ребята!

Я также попробовал концепцию Page Splitting (код PageSplitter приведен в SO) для viewpager. Это не разделение слов точно. Поэтому я попробовал это с веб-просмотром.

1 Ответ

0 голосов
/ 09 мая 2019

Я использовал этот длинный назад, проверьте, все еще работает

@Override
public void onPageFinished(final WebView view, String url) {


    final WebView myWebView = (WebView) view;

    String varMySheet = "var mySheet = document.styleSheets[0];";

    String addCSSRule = "function addCSSRule(selector, newRule) {"
            + "ruleIndex = mySheet.cssRules.length;"
            + "mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);"

            + "}";

    String insertRule1 = "addCSSRule('html', 'padding: 0px; height: "
            + (myWebView.getMeasuredHeight() / mContext.getResources().getDisplayMetrics().density)
            + "px; -webkit-column-gap: 0px; -webkit-column-width: "
            + myWebView.getMeasuredWidth() + "px;')";


    myWebView.loadUrl("javascript:" + varMySheet);
    myWebView.loadUrl("javascript:" + addCSSRule);
    myWebView.loadUrl("javascript:" + insertRule1);


    view.setVisibility(View.VISIBLE);
    super.onPageFinished(view, url);
    //without delay gives wrong count
    CountDownTimer test=  new CountDownTimer(3000,1000) {

        @Override
        public void onTick(long millisUntilFinished) {


        }

        @Override
        public void onFinish() {

            int widthis =  webView.getContentWidth();

            TotalScrollWidth=widthis;
                    Log.i("WidthTotoal Scroll", ""+widthis);

                    TotalPages= (TotalScrollWidth/ScreenWidth)-1;
                //  Toast.makeText(getApplicationContext(), "Total Pages are" +TotalPages, 100).show();
                     progressPages.setMax(TotalPages);

                    progressBar.setVisibility(View.GONE);
        }
    };

    test.start();

}

Я знаю, что в этом есть какой-то плохой код, просто потерпите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...