Как отключить вертикальную прокрутку веб-просмотра для загрузки всей страницы в виде другого столбца - PullRequest
6 голосов
/ 12 апреля 2011

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

это стиль, который я добавил в html.it вообще не работает.

  loadingStringHorizontal="<style type='text/css'>body { width:200px;height:400px;
    -webkit-column-gap:17px;-webkit-column-width:170px;
     text-align:justify ;} </style>";

Спасибо за ваше время.

Ответы [ 4 ]

4 голосов
/ 24 сентября 2014

Вы можете попробовать макет одного столбца

myWebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

или в XML вы не можете поместить ничего в полосу прокрутки

<WebView
    android:scrollbars="none" />

затем установите myWebView.setScrollContainer(false);

2 голосов
/ 29 мая 2017

сначала вы должны добавить пользовательский веб-просмотр для отключения вертикальной прокрутки вниз

class CustomWebView2 extends WebView
{
    Context mContext = null;
    private float start_y = -1;
    private String DEBUG_TAG = "  touch:";

    public CustomWebView2(Context context)
    {
        super(context);
        mContext = this.getContext();
    }

    public CustomWebView2(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        mContext = context;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        int action = event.getAction();

        switch (action)
        {
            case (MotionEvent.ACTION_DOWN):
                /**
                 * get Y position
                 */
                start_y = event.getY();
                break;
            case (MotionEvent.ACTION_MOVE):
                /**
                 * if you scroll to up more than 60px
                 * webView scroll back to Y=0
                 */
                if(start_y-event.getY()>60)
                {
                    scrollTo(getScrollX(),0);
                    return true;
                }
                break;
            case (MotionEvent.ACTION_UP):
                Log.d(DEBUG_TAG, "Action was UP");
                break;
        }
        return super.onTouchEvent(event);
    }
}

тогда вы можете создать многостолбцовый веб-просмотр с javascript (https://stackoverflow.com/a/9165698/1140304)

Вы должны применить эти строки для настройки веб-просмотра

 CustomWebView webView_ = (CustomWebView) view.findViewById(R.id.webView);
 webView_.getSettings().setUseWideViewPort(true);
 webView_.getSettings().setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
 /**
 * hide vertical scrollBar
 */
 webView_.setVerticalScrollBarEnabled(false);

после того, как ваша страница полностью загружена в веб-просмотре, вы должны запустить JavaScript-код в веб-просмотре

 webView_.setWebViewClient(new WebViewClient(){

            public void onPageFinished(WebView view, String url) {
                injectJavascript();
            }

        });

это код JavaScript

public void injectJavascript() {
        String js = "javascript:function initialize() { " +
                "var d = document.getElementsByTagName('body')[0];" +
                "var ourH = window.innerHeight; " +
                "var ourW = window.innerWidth; " + 
                "var fullH = d.offsetHeight; " +
                "var pageCount = Math.floor(fullH/ourH)+1;" +
                "var currentPage = 0; " +
                "var newW = pageCount*ourW; " +
                "d.style.height = ourH+'px';" +
                "d.style.width = newW+'px';" +
                "d.style.webkitColumnGap = '2px'; " +
                "d.style.margin = 0; " +
                "d.style.webkitColumnCount = pageCount;" +
                "}";
        webView_.loadUrl(js);
        webView_.loadUrl("javascript:initialize()");
    }
1 голос
/ 09 июня 2018

Здесь простое, но эффективное решение, единственное работающее для меня (ссылка здесь ):

body{
    position:fixed;
    top:0;
}
0 голосов
/ 07 августа 2012

Попробуйте добавить CSS overflow: auto;overflow-y: hidden;

...