有一个包含某些内容的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.html
和test-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>
测试了几种情况:
height: 80px
和overflow: scroll
srcdoc
放在同一张桌子中src="test-scroll-content.html"
的iframe中加载<img>
的src点指向本地图像当直接将test-scroll.html加载到浏览器file:///Users/linma9/Documents/test-scroll.html
时,似乎在浏览器的所有情况下内容都可以滚动。
(加载到浏览器中后更容易看到滚动条,然后使用chrome开发工具进行“检查”。)
对于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=
的内容?)
有人将内容加载到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>