我的TextView包含大量文本,用户搜索某些内容并突出显示匹配项,但是它们可能会在页面下方,有没有办法滚动到第一个匹配项?
我看了一遍谷歌,似乎没有发现任何相关内容。
我的布局:
<ScrollView android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:requiresFadingEdge="vertical"
android:id="@+id/sclView">
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtView"
android:textSize="16sp"
android:paddingTop="10dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingBottom="10dp"
android:lineSpacingExtra="5dp"
android:textColor="@color/TextGray"
android:textIsSelectable="true"/>
</ScrollView>
答案 0 :(得分:4)
我假设没有水平滚动。如果有,你可以从这个答案推断出来。看到你突出了比赛,我也会假设你已经找到了发现部分。这意味着您应该在CharSequence
。
使用Layout.getLineForOffset
查找字符串的行,然后Layout.getLineTop
获取行顶部的位置,然后View.scrollTo
滚动到所需的位置。看起来应该是这样的:
Layout layout = textView.getLayout();
scrollView.scrollTo(0, layout.getLineTop(layout.getLineForOffset(startPos)));
我没有试过这个,所以你可能需要做一些事情来处理你添加的填充等等,但我认为一般的想法应该有效。