调用setText()后,TextView上的Marquee不起作用

时间:2016-03-31 11:48:21

标签: android

我们正在开发一款需要在API19上运行的应用程序。 我们应该在VideoView上显示一个文本,当文本较长时(可以容纳在容器内)我们想要水平滚动/选取文本。

虽然TextView具有指定Marquee的属性,但我们无法使其正常工作。

这是XML定义:

android:visibility="invisible"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit ="marquee_forever"
android:scrollHorizontally="true"

以下是以编程方式显示的方式:

textView.setVisibility(View.VISIBLE);
textView.setSelected(true);
textView.setEnabled(true);

我甚至试图以编程方式设置所有属性而不是XML定义。这些尝试都没有奏效。关于这个主题有很多问题,我尝试了几乎所有的建议,但这无法发挥作用。

更新 如果我不打电话textView.setText(),它可以正常工作。从这个回答:https://stackoverflow.com/a/13765865/560449看来,在调用textView.setText()之后我们无法获得Marquee效果继续工作。有人知道这方面有什么问题吗?

1 个答案:

答案 0 :(得分:0)

暂时摆脱这个问题,发现这里没有涉及火箭科学!

您需要做的就是在代码中调用setText()后以编程方式设置所有属性。

例如

mTvTitle.setText("skjdfbaskjfdbkajbgjkbgjkdbgkjg");
        mTvTitle.setEllipsize(TextUtils.TruncateAt.MARQUEE);
        mTvTitle.setSingleLine(true);
        mTvTitle.setMarqueeRepeatLimit(5);
        mTvTitle.setSelected(true);

完成!它的工作方式对我来说太好了。

SOF REFERENCE