Android:为什么我不能以编程方式滚动此WebView?

时间:2019-09-30 14:03:24

标签: android kotlin webview scroll

我有一个WebView,它没有显示实际的网站,但是会显示HTML格式的字符串。我需要在按下按钮时将此WebView滚动到顶部。我知道在StackOverFlow上有很多类似的问题,但是没有一个问题对我有帮助-所以我假设我的问题有所不同。我对HTML / CSS不太了解,所以也许是错误的来源-不确定。

这是将内容输入到我的WebView中的代码:

fun wrapAndInflateHtml(webView: WebView, text: String) {
    val html = wrapWithHtml(webView.context, text)
    webView.loadData(html, "text/html", "UTF-8")
}

private fun wrapWithHtml(c: Context, htmlBody: String): String {
    return "<html>" + wrapCss(getCss(c)) +
            "<body>$htmlBody</body></html>"
}

private fun getCss(c: Context): String {
    return c.getString(R.string.html_header)
}

private fun wrapCss(css: String): String {
    return "<head><style>$css</style></head>"
}

这是标题的字符串资源:

    <string name="html_header"><![CDATA[<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">

这是一个以字符串作为主体(wrapAndInflateHtml的{​​{1}}参数)的示例:

text

这是我的布局:

<string name="imprint_html"><![CDATA[<p>Some Company<br />
Some Street 1<br />
City<br />
</p>
<p>Some more text here<br />
And a number: 65560<br />
</p>
<p>Some Text here:<br /><br />
Some more text.
</p>
<p>Phone: <a href=\"123456789\">123456789</a><br /><br />
Some more text<br /><a href=\"mailto:email@server.com\">email@server.com</a>.</p>]]></string>

和我的片段:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <WebView
        android:id="@+id/wv_imprint"
        style="@style/CopySmall"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="@dimen/margin_16" />

</LinearLayout>

现在,如果我添加一种以编程方式滚动WebView的方法,如下所示: class HtmlViewerFragment : Fragment() { lateinit var title: String lateinit var html: String lateinit var webView: WebView override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { super.onCreateView(inflater, container, savedInstanceState) extractArguments() return inflater.inflate(R.layout.fragment_html_viewer, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) webView = wv_imprint wrapAndInflateHtml(wv_imprint, html) } private fun extractArguments() { arguments?.getString("title").let { title = it!! } arguments?.getString("html").let { html = it!! } } } 无效。我的WebView的scrollX和scrollY始终为0。

有人暗示我该如何解决吗?

0 个答案:

没有答案