Android:无法设置字幕

Android:无法设置字幕,android,xml,marquee,Android,Xml,Marquee,我无法在android中实现字幕文本视图 是的,这个问题与许多其他有关Marquee的问题类似。大部分我都读过。我试着用很多答案的方式实现Marquee。但我的代码仍然不起作用 请帮我解决这个问题。我什么都试过了。什么都没用 谢谢 XML代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

我无法在android中实现字幕文本视图

是的,这个问题与许多其他有关Marquee的问题类似。大部分我都读过。我试着用很多答案的方式实现Marquee。但我的代码仍然不起作用

请帮我解决这个问题。我什么都试过了。什么都没用

谢谢

XML代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    android:background="@color/mainBg"
    tools:context=".MainActivity" >

<TextView android:layout_width="fill_parent"
    android:id="@+id/marquee"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:lines="1"
    android:ellipsize="marquee"
    android:fadingEdge="horizontal"
    android:marqueeRepeatLimit="marquee_forever"
    android:scrollHorizontally="true"
    android:text="@string/home"
    android:fontFamily="monospace"
    android:textStyle="bold"
    android:paddingBottom="20dp" />
</LinearLayout>

尝试将
android:singleLine=“true”
添加到文本视图,使文本仅保留在一行。

如果
TextView
填充整个宽度,则需要添加这些代码行

<TextView
    .
    .
    android:singleLine="true"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    />
如果
TextView
没有填充宽度,唯一的方法就是调用这个方法并将
TextView
传递给它

    fun addMarquee(textView: TextView) {
    textView.viewTreeObserver.addOnGlobalLayoutListener(object :
        ViewTreeObserver.OnGlobalLayoutListener {
        override fun onGlobalLayout() {
            val pixels = textView.measuredWidth - 1
            val params = textView.layoutParams
            params.width = pixels
            textView.layoutParams = params
            textView.isSelected = true
            textView.ellipsize = TextUtils.TruncateAt.MARQUEE
            textView.isSingleLine = true
            textView.marqueeRepeatLimit = -1
            textView.viewTreeObserver.removeOnGlobalLayoutListener(this)
        }
    })
}

注意:此方法仅适用于文本视图宽度为
wrap\u content

的情况。有什么问题吗?问题是什么?“我的代码不工作”太含糊了。我认为文本视图文本中的内容需要填充屏幕宽度以外的内容-那么“主页”字符串资源的内容是什么?显示一个不滚动的文本视图。静态文本视图仅当内容不适合屏幕时才滚动-您将文本设置为什么?如果它只是“home”,请尝试更长的字符串来测试它。我尝试放置更长的字符串。仍然不起作用。安卓:lines=“1”不是做同样的事情吗?你会这么认为的。我在一个示例应用程序中尝试了你的代码,它不会使用
android:lines=“1”
滚动(只是…),但它确实可以使用
android:singleLine=“true”
我尝试使用android:singleLine=“true”。但是没有运气。问题持续您是否同时删除android:lines标签?是的,我删除了。我还尝试将焦点设置为文本视图。
textview.setSelected(true);
    fun addMarquee(textView: TextView) {
    textView.viewTreeObserver.addOnGlobalLayoutListener(object :
        ViewTreeObserver.OnGlobalLayoutListener {
        override fun onGlobalLayout() {
            val pixels = textView.measuredWidth - 1
            val params = textView.layoutParams
            params.width = pixels
            textView.layoutParams = params
            textView.isSelected = true
            textView.ellipsize = TextUtils.TruncateAt.MARQUEE
            textView.isSingleLine = true
            textView.marqueeRepeatLimit = -1
            textView.viewTreeObserver.removeOnGlobalLayoutListener(this)
        }
    })
}