安卓:自动滚动文本中的TextView(Android: Auto-scrolling text i

2019-06-25 17:33发布

我创建了一系列有100px的固定宽度的标签。 一个标签包含与它下面的一些文本的图像。 如果文本太长,我想它会自动滚动。 我只想要一行。 我试过以下,但没有奏效。 我使用的是Android 2.3:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginRight="3dp"
    android:layout_marginTop="3dp"
    android:background="#ff737373"
    android:gravity="center"
    android:minWidth="64dp"
    android:orientation="vertical"
    android:padding="3dp" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:tag="tabImage" >
    </ImageView>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:scrollHorizontally="true"
        android:singleLine="true"
        android:maxWidth="100px"
        android:tag="tabCaption"
        android:textColor="#ffd9d9d9"
        android:textSize="16sp" />

</LinearLayout>

知道为什么这不起作用? 我碰到的解决方案从另一个发布有用户表示,它的工作原理。

Answer 1:

在您的活动你,如果你想框选文字添加

  TextView tv=(TextView)findViewById(R.id.textview1);
  tv.setSelected(true);


Answer 2:

你可能想试试这个:

https://github.com/kaeppler/ignition/blob/master/ignition-core/ignition-core-lib/src/com/github/ignition/core/widgets/ScrollingTextView.java



Answer 3:

<TextView

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:gravity="center"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:text="Auto text scroller" 
        android:textSize="50sp"
        />


Answer 4:

请注意,如果文本的长度比为它定义的范围的宽度不会滚动。 在这种情况下,你可能要在文本与自身类似延伸:

- 。 。 。 。 。

String charsInBreak = "   ";
 while (bounds.width() < this.m_width)
 {
    m_text = (m_text + charsInBreak + m_text);
    paint.getTextBounds(m_text, 0, m_text.length(), bounds);
 } 

如果你希望你的文字永远选取框:

m_textView.setMarqueeRepeatLimit(-1);


文章来源: Android: Auto-scrolling text in TextView