我有锚链接(例如:<a href="#P12"/>
)在我的HTML中,我加载到WebView中,这个WebView在NestedScrollView中。当我暂时禁用NestedScrollView,因为每个人都建议这样做时,锚链接不能正常工作,这些锚链接工作得很好。然而,我的布局确实需要这个NestedScrollView,因为有多种原因:
1.它有一个CollapsingToolbarLayout,需要设置app:layout_behavior="@string/appbar_scrolling_view_behavior
;
- WebView的上方和下方都有布局元素;
1.这些元素必须作为一个整体一起滚动。
预期的行为是,当点击锚链接时,内容跳转到网页的正确部分。实际的行为是,内容跳到一些随机的地方,你不能再滚动整个页面(顶部或底部被切断)。
是否有可能使这些锚链接在我的WebView中工作,该WebView位于NestedScrollView中?
在StackOverflow上,我发现了与此类似的one question,但不幸的是,它没有答案,而且它来自2017年,所以我非常怀疑有人会很快回答它。
3条答案
按热度按时间ippsafx71#
因为当我偶然发现一个没有答案的问题时,我会感到沮丧,所以我会回答我自己的问题,这样别人就会知道我是如何解决这个问题的。
坏消息是,这个问题无法解决。至少在2021年还没有。
我工作的公司和客户决定做的是改变这个屏幕的整个实现。整个屏幕现在都是WebView,而不是只有屏幕的一部分是WebView。
epfja78i2#
我不能用上面提供的方法来做,所以我尝试了一种diff方法
1.启用JS与您的webview
webView.getSettings().setJavaScriptEnabled(true);
1.添加并定义javascript接口关键字,以便以后可以从javascript访问它
1.然后创建一个扩展
WebViewClient
的类1.启用html5功能并添加一些javascript代码
}
1.现在,在类中添加一个函数,在这个函数中你定义了android关键字,并且可以访问scrollview来进行滚动
这就是我们使用的函数
bnl4lu3b3#
这是我的工作解决方案。单击锚链接将适当滚动ScrollView。单击“上一步”将滚动回顶部。