我只是不想使用ScrollView。所以我有一个启用垂直滚动条的 TextView 。
<TextView
android:id="@+id/tv_service_ticketinfo_details"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:textColor="@color/black"
android:autoLink="web"
android:scrollbars="vertical"
android:text="empty"
android:background="@drawable/custom_shape_grey">
</TextView>
问题是,滚动条只能滚动包含 Web 链接的文本。对于其他文本,我看到滚动条,但无法滚动。
我无法解释。你呢?
更新:
还有一件奇怪的事情: 一旦我设置了带链接的文本,那么我就可以将其替换为另一个不带链接的文本,并且 textView 保持可滚动
最佳答案
所以我认为问题是 TextViews 不会自动滚动,只是因为你设置了 android:scrollbars。您必须设置 ScrollingMovementMethod。
但是,当您使用autoLink并找到链接时,android框架将为您设置MovementMethod。这就是行为不同的原因。
有两种适合我的解决方案。
设置文本后,强制将移动方法设置为支持链接和滚动的方法。
final TextView output = (TextView) findViewById(R.id.output);
output.setText(content);
// ensure that text will scroll with or without linked text
output.setMovementMethod(LinkMovementMethod.getInstance());
或者在将文本添加到 TextView 之前设置移动方法(假设为纯文本)。如果autoLink检测到链接,它会改变移动方法本身。
final TextView output = (TextView) findViewById(R.id.t_output);
// ensure that text defaults to scrollable
output.setMovementMethod(ScrollingMovementMethod.getInstance());
output.setText(content);
(仅供引用:我正在使用 android:autoLink="all"
)
关于android - TextView 中的滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4489843/