我有使用 JS 加载 HTML 的WebView。从 WebView 我调用 JS 函数,该函数正在寻找HTML中的一些文本。在这个函数中,我有一个命令,它将WebView滚动到下一个匹配文本:
window.scrollTo(0, y);
如果我将WebView 放在 ScrollView中(如下面的代码中所示),WebView将不会滚动(即使命令webView.scrollTo(x,y)
也不滚动它)。但是如果我把它放在外面 ScrollView - 滚动到下一个位置就可以了。
但我必须在 ScrollView 中使用 WebView 。
请帮我解决这个问题。我该怎么办? 这是我的布局代码:
<ScrollView
android:id="@+id/articleScrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<LinearLayout
android:id="@+id/articleBodyLinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/fragment_main_article"/>
<LinearLayout
android:id="@+id/article_body"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:orientation="vertical">
<WebView
android:id="@+id/article_web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="3dp"
android:clickable="true"
android:textSize="16dp">
</WebView>
</LinearLayout>
</LinearLayout>
</ScrollView>
这是调用 JS 的活动方法代码:
public void searchInText(View view) {
final String textToSearch = editTextSearchInText.getText().toString();
webSettings.setJavaScriptEnabled(true);
article_web_view.loadDataWithBaseURL(null, issue.getHtmlBody(), "text/html", "UTF-8", "UTF-8");
article_web_view.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:MyApp_HighlightAllOccurencesOfString('" + textToSearch + "')");
}
});
}
答案 0 :(得分:0)
您不应在滚动视图内使用scrollTo()方法进行Web视图,因为 *如果您在滚动视图下使用Web视图,则所有滚动功能都将应用于其父级(用于滚动视图)* 所以我们必须在父滚动视图而不是Web视图上应用方法。
因此使用滚动视图的fullScroll()方法。因此,请在下面的行中应用滚动视图。
滚动顶部&gt;&gt;
YourScrollView.fullScroll(yourScrollView.FOCUS_UP);
向下滚动&gt;&gt;
YourScrollView.fullScroll(yourScrollView.FOCUS_DOWN);