如何为textview(非常长的文本)设置动画水平自动滚动

Shr*_*hri 4 android textview

我对Marquee不感兴趣,因为在Marquee中你无法控制选框的速度.我试图为textview设置动画,但是Parent视图在末尾剪切文本,即使包含textviews的所有父布局和视图组都设置了两个标志clipchildren = false,clipToPadding = false.

我错过了什么或者有更好的解决方法吗?

xml看起来像

<TextView
        android:id="@+id/textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginBottom="66dp"
        android:maxLines="1"
        android:singleLine="true"
        android:textColor="#585858"
        android:textSize="32sp" >
    </TextView>
Run Code Online (Sandbox Code Playgroud)

和代码片段看起来像

TextView textView2 = (TextView)findViewById( R.id.textview1 );    
textView2.startAnimation((Animation)AnimationUtils.loadAnimation(this, R.anim.translate));
Run Code Online (Sandbox Code Playgroud)

Hei*_*ein 6

我想你可以使用翻译动画.像这样的东西

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="5000"
    android:fromXDelta="100"
    android:interpolator="@android:anim/linear_interpolator"
    android:repeatCount="infinite"
    android:repeatMode="restart"
    android:toXDelta="-100" />
Run Code Online (Sandbox Code Playgroud)

并添加到您的textview中

textview.startAnimation((Animation)AnimationUtils.loadAnimation(Context,R.anim.scroll_animation));
Run Code Online (Sandbox Code Playgroud)

希望它可以帮到你.

  • 我已经完成了这个,但父视图仍然剪辑文本 (3认同)

Har*_*ddy 5

只需将其添加到您的文本视图中即可

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:textSize="30dp"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:marqueeRepeatLimit="marquee_forever"
    android:scrollHorizontally="true"
    android:singleLine="true"
    android:text="Your_Text" />
Run Code Online (Sandbox Code Playgroud)


arv*_*rma 5

我相信这肯定会解决大量观众的问题。

问:以合理的速度水平无限地自动滚动单行长文本消息(使用 hard_coding 或来自 string.xml),但使用选框(至少尝试一次)。无剪裁

第 1 步:在 activity_main.xml 文件中:

<TextView
    android:text="either hard coding or from string.xml"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/textView2"  
    android:background="@color/colorPrimary"
    android:textSize="18sp"
    android:marqueeRepeatLimit="marquee_forever"
    android:textColor="@android:color/background_light" />
Run Code Online (Sandbox Code Playgroud)

第 2 步:在 main_activity java 文件公共类 MainActivity 扩展 AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView textView = (TextView) findViewById(R.id.textView2);
    textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
    textView.setSelected(true);
    textView.setSingleLine(true);
    textView.setText("Oxfam says 8 men as rich as half the world. | Govt may set threshold for probe into deposits. | At least 32 dead after Turkish plane hits village.");}}
Run Code Online (Sandbox Code Playgroud)

//如果他已经输入了长输入,则可以删除最后一行