如何使内容在Web视图中滚动?

时间:2018-12-02 16:15:37

标签: android html iframe scroll android-webview

有一个包含某些内容的html在加载到android webview后似乎无法滚动。

如果直接在浏览器中测试过,则相同的html似乎滚动良好。有人有同样的问题吗?

==============

更新: 对于滚动问题,事实证明,在代码中有一个侦听器禁用了MotionEvent.ACTION_MOVE。

val listener = object : OnTouchListener {
        override fun onTouch(v: View, event: MotionEvent): Boolean {
            return event.action == MotionEvent.ACTION_MOVE
        }
    }

    webview.setOnTouchListener(listener)

现在唯一的问题是为什么iframe无法显示内容?


有两个HTML文件,test-scroll.htmltest-scroll-content.html (has a table as content)

test-scroll.html:

    <html>
    <head>
        <style>
            .test_container_div {
                position: relative;
                width: 360px;
                height: 80px;
                overflow: scroll;
            }


        </style>
    </head>
    <body>
    <p> table in this page</p>

    <div class="test_container_div">
        <table>
            <tr>
                <th>Firstname</th>
                <th>Lastname</th>
                <th>Age</th>
            </tr>
            <tr>
                <td>Jill</td>
                <td>Smith</td>
                <td>50</td>
            </tr>
            <tr>
                <td>Eve</td>
                <td>Jackson</td>
                <td>94</td>
            </tr>
            <tr>
                <td>John</td>
                <td>Doe</td>
                <td>80</td>
            </tr>
            <tr>
                <td>zbr</td>
                <td>Ford</td>
                <td>50</td>
            </tr>
            <tr>
                <td>Elis</td>
                <td>Liu</td>
                <td>94</td>
            </tr>
            <tr>
                <td>Pter</td>
                <td>Hans</td>
                <td>80</td>
            </tr>
        </table>
    </div>

    <p> table in iframe srcdoc</p>
    <div class="test_container_div">
        <iframe scrolling="no"
                srcdoc="<table>
            <tr>
                <th>Firstname</th>
                <th>Lastname</th>
                <th>Age</th>
            </tr>
            <tr>
                <td>Jill</td>
                <td>Smith</td>
                <td>50</td>
            </tr>
            <tr>
                <td>Eve</td>
                <td>Jackson</td>
                <td>94</td>
            </tr>
            <tr>
                <td>John</td>
                <td>Doe</td>
                <td>80</td>
            </tr>
            <tr>
                <td>zbr</td>
                <td>Ford</td>
                <td>50</td>
            </tr>
            <tr>
                <td>Elis</td>
                <td>Liu</td>
                <td>94</td>
            </tr>
            <tr>
                <td>Pter</td>
                <td>Hans</td>
                <td>80</td>
            </tr>
        </table>">

        </iframe>
    </div>

    <p> table in iframe src</p>
    <div class="test_container_div">

        <iframe width="100% !important" height="300px"
                src="test-scroll-content.html"
                frameborder="1" scrolling="no" allowfullscreen=""></iframe>

    </div>

    <p>image in div </p>
    <div class="test_container_div">
        <img width="100% !important"
             src="img_2.jpg">
        </img>
    </div>

    <p>image in iframe </p>
    <div class="test_container_div">
        <iframe width="100% !important" height="200px"
                src="img_2.jpg"
                frameborder="1"  scrolling="no" allowfullscreen="">
        </iframe>
    </div>

    </body>
    </html>

测试了几种情况:

  1. div中的一个表,div中有height: 80pxoverflow: scroll
  2. iframe中与其srcdoc放在同一张桌子中
  3. 在竞争src="test-scroll-content.html"的iframe中加载
  4. <img>的src点指向本地图像
  5. 相同的图像文件,但加载到iframe的src中

当直接将test-scroll.html加载到浏览器file:///Users/linma9/Documents/test-scroll.html时,似乎在浏览器的所有情况下内容都可以滚动。

(加载到浏览器中后更容易看到滚动条,然后使用chrome开发工具进行“检查”。)

enter image description here

对于android项目,将相同的文件放在资产文件夹下。

然后做

webview.loadUrl("file:///android_asset/test-scroll.html")

或将test-scroll.html内容作为字符串放在函数fun getTestScrollHtmlStr() : String{}中,然后 做

webview.loadDataWithBaseURL("file:///android_asset/",
                getTestScrollHtmlStr(),
                "text/html", "utf-8",null)

在android设备上运行时,似乎两种方法都无法滚动内容

(另一个问题是它无法显示已加载iframe src=的内容?)

enter image description here

有人将内容加载到android webview中(无论是否在iframe中)时,是否有人知道如何使内容可滚动?

test-scroll-content.html:

    <html>
    <head>
    </head>
    <body>
    <p> directly put in div</p>

    <div>
        <table >
            <tr>
                <th>Firstname</th>
                <th>Lastname</th>
                <th>Age</th>
            </tr>
            <tr>
                <td>Jill</td>
                <td>Smith</td>
                <td>50</td>
            </tr>
            <tr>
                <td>Eve</td>
                <td>Jackson</td>
                <td>94</td>
            </tr>
            <tr>
                <td>John</td>
                <td>Doe</td>
                <td>80</td>
            </tr>
            <tr>
                <td>zbr</td>
                <td>Ford</td>
                <td>50</td>
            </tr>
            <tr>
                <td>Elis</td>
                <td>Liu</td>
                <td>94</td>
            </tr>
            <tr>
                <td>Pter</td>
                <td>Hans</td>
                <td>80</td>
            </tr>
        </table>
    </div>

    </body>
    </html>

0 个答案:

没有答案