我们正在开发一款需要在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效果继续工作。有人知道这方面有什么问题吗?
答案 0 :(得分:0)
暂时摆脱这个问题,发现这里没有涉及火箭科学!
您需要做的就是在代码中调用setText()
后以编程方式设置所有属性。
例如
mTvTitle.setText("skjdfbaskjfdbkajbgjkbgjkdbgkjg");
mTvTitle.setEllipsize(TextUtils.TruncateAt.MARQUEE);
mTvTitle.setSingleLine(true);
mTvTitle.setMarqueeRepeatLimit(5);
mTvTitle.setSelected(true);
完成!它的工作方式对我来说太好了。