如果 android 中的文本较少,则选取框文本不会移动
Marque text not moving if texts are less in android
我正在使用下面的代码,它适用于大语句,但不适用于像 "hello".
这样的小文本
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:maxLines="1"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="this_bill_has_some_unipay_points_promotion"/>
而不是 android:layout_width="match_parent" 你必须设置布局宽度喜欢 (30dp 40dp) 因为当字符长于视图的宽度时,选取框被启用。
您应该调用 TextView.isSelected = true 来开始移动文本。
编辑:工作解决方案
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="48dp"
android:ellipsize="marquee"
android:gravity="center_vertical"
android:scrollHorizontally="true"
android:singleLine="true"
android:textColor="@android:color/white" />
扩展函数
fun TextView.setMovingText(text: String) = this.post {
val textWidth = this.paint.measureText(text)
val spaceWidth = this.paint.measureText(" ")
val requiredAdditionalSpace = ((this.width - textWidth) / spaceWidth).toInt()
this.text = StringBuilder(text).apply {
for (i in 0..requiredAdditionalSpace) {
append(" ")
}
}
this.isSelected = true
}
如何使用
textView.setMovingText("Hey")
我只是想展示一个可行的解决方案。您也可以(应该)修改以获得更好的性能并检查负值。
是的,根据选取框 属性 如果文本小于布局的宽度,则不应滚动。
如果你仍然想移动它,那么你可以设置视图的 manually/static 宽度设置,文本将移动,在布局中。xml 文件你得到宽度的想法文本视图。仍有问题让我知道。
我正在使用下面的代码,它适用于大语句,但不适用于像 "hello".
这样的小文本<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:maxLines="1"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="this_bill_has_some_unipay_points_promotion"/>
而不是 android:layout_width="match_parent" 你必须设置布局宽度喜欢 (30dp 40dp) 因为当字符长于视图的宽度时,选取框被启用。
您应该调用 TextView.isSelected = true 来开始移动文本。
编辑:工作解决方案
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="48dp"
android:ellipsize="marquee"
android:gravity="center_vertical"
android:scrollHorizontally="true"
android:singleLine="true"
android:textColor="@android:color/white" />
扩展函数
fun TextView.setMovingText(text: String) = this.post {
val textWidth = this.paint.measureText(text)
val spaceWidth = this.paint.measureText(" ")
val requiredAdditionalSpace = ((this.width - textWidth) / spaceWidth).toInt()
this.text = StringBuilder(text).apply {
for (i in 0..requiredAdditionalSpace) {
append(" ")
}
}
this.isSelected = true
}
如何使用
textView.setMovingText("Hey")
我只是想展示一个可行的解决方案。您也可以(应该)修改以获得更好的性能并检查负值。
是的,根据选取框 属性 如果文本小于布局的宽度,则不应滚动。
如果你仍然想移动它,那么你可以设置视图的 manually/static 宽度设置,文本将移动,在布局中。xml 文件你得到宽度的想法文本视图。仍有问题让我知道。