在textView android中移动文本

vhipe2zx  于 2022-11-27  发布在  Android
关注(0)|答案(7)|浏览(201)

我想问你,如果textview有任何选项,当我有太长的文本,例如文本有30 dp和textview有15 dp,我想显示文本是从左角移动到右,并返回到开始,并再次。像动画。我想用户看到所有的文本。像自动滚动。
编辑:我如何在代码中而不是在xml中做到这一点?

u3r8eeie

u3r8eeie1#

一个例子-
在XML:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"
        android:textColor="#ff4500"
        android:text="this is a very long piece of text that will move" />
</RelativeLayout>

在Java中:

tv = (TextView) this.findViewById(R.id.tv);  
        tv.setSelected(true);  // Set focus to the textview
xyhw6mcr

xyhw6mcr2#

您应该使用android:ellipsize="marquee"

    • 编辑:**您可以使用textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
yhxst69z

yhxst69z3#

<TextView
        android:id="@+id/YOURID"
        android:layout_width="15dp"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"
        android:singleLine="true"
        />

这将有助于它滚动,直到它聚焦

bjg7j2ky

bjg7j2ky4#

使用此代码,它的工作100%:

TextView top=new TextView(this);
top.setText("Developers are working to add more features");
top.setEllipsize(TextUtils.TruncateAt.MARQUEE);
top.setHorizontallyScrolling(true);
top.setMarqueeRepeatLimit(-1);
top.setFocusable(true);
top.setFocusableInTouchMode(true);
kiz8lqtg

kiz8lqtg5#

是的,它被称为marquee。将以下内容设置为您的TextView

android:singleLine="true"
android:ellipsize="marquee"
ncgqoxb0

ncgqoxb06#

试试这3行代码:(以上内容的总结)

textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
    textView.setSingleLine(true);
    textView.setSelected(true);
olhwl3o2

olhwl3o27#

为了移动文本,除了添加属性:

android:ellipsize="marquee"
android:singleLine="true"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:clickable="true"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"

视图必须处于焦点上,因此可以通过两种方式实现:
1.以编程方式:

tv.setSelected (true);

1.通过添加***requestFocus***标记执行XML中的所有操作:

<TextView 
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:ellipsize="marquee"
     android:singleLine="true"
     android:marqueeRepeatLimit="marquee_forever"
     android:focusable="true"
     android:clickable="true"
     android:focusableInTouchMode="true"
     android:scrollHorizontally="true">
     <requestFocus />
</TextView>

相关问题