带有包含网站链接的文本的自动垂直滚动 TextView

Posted

技术标签:

【中文标题】带有包含网站链接的文本的自动垂直滚动 TextView【英文标题】:Automatic vertical scrolling TextView with text containing a website link 【发布时间】:2014-10-25 02:40:34 【问题描述】:

我制作了一个 TextView,其中文本自动开始垂直滚动,就像电影中的片尾字幕一样。 在文本中有一个网站的链接。文本滚动流畅,链接打开网络浏览器。

但是,当点击链接时,文本开始向后滚动,向下滚动到 TextView 的底部,并在此处停止。

我希望文本继续滚动,即使点击了链接。 怎么办?

文本框布局(activity_main.xml):

<TextView
    android:id="@+id/text_box"
    android:layout_
    android:layout_
    android:maxLines="6"
    android:text="@string/text" />

要滚动的文本(strings.xml):

<string name="text">
    bla bla\nlotsa bla\n\n<a href="http://www.***.com">***.com</a>
</string>

文本框和滚动条(MainActivity.java):

private TextView mTextBox;
private Scroller mTextScroller;

mTextBox = (TextView) findViewById(R.id.text_box);
mTextBox.setMovementMethod(LinkMovementMethod.getInstance()); // Making the link clickable
mTextScroller = new Scroller(this, new LinearInterpolator()); // Create new scroller
mTextBox.setScroller(mTextScroller); // Set the scroller to the text view

让文本开始滚动(MainActivity.java):

int startY = mTextBox.getHeight();
int lineHeight = mTextBox.getLineHeight();
int lineCount = mTextBox.getLineCount();
int duration = 10000; // Milliseconds
int startX = 0;
int dx = 0;
int dy = startY + lineHeight * lineCount;

mTextScroller.startScroll(startX, -startY, dx, dy, duration);

【问题讨论】:

【参考方案1】:

解决方案可能是在 TextView 前面放置一个 Button 并为该按钮执行 setOnClickListener() 以便 TextView 不接收交互。我认为问题在于 TextView 的焦点在点击它时会发生变化。我可能错了,但你可以试试这个方法

【讨论】:

以上是关于带有包含网站链接的文本的自动垂直滚动 TextView的主要内容,如果未能解决你的问题,请参考以下文章

自动滚动文本框到底部

追加文本时如何防止文本框自动滚动?

带有垂直文本的冻结标题的表格

不需要时如何隐藏垂直滚动条

创建免责声明屏幕,用户必须一直向下滚动

CSS垂直和水平居中的Div [重复]