当ScrollView

时间:2017-03-16 14:08:19

标签: javascript android webview scrollview

我有使用 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 + "')");
        }
    });
}

1 个答案:

答案 0 :(得分:0)

您不应在滚动视图内使用scrollTo()方法进行Web视图,因为 *如果您在滚动视图下使用Web视图,则所有滚动功能都将应用于其父级(用于滚动视图)* 所以我们必须在父滚动视图而不是Web视图上应用方法。

因此使用滚动视图的fullScroll()方法。因此,请在下面的行中应用滚动视图。

滚动顶部&gt;&gt;

 YourScrollView.fullScroll(yourScrollView.FOCUS_UP);

向下滚动&gt;&gt;

YourScrollView.fullScroll(yourScrollView.FOCUS_DOWN);