15

テキストが 30 dp で textview が 15 dp のように、テキストが長すぎる場合に、左隅から右に移動するテキストを表示し、最初に戻るというオプションがあるかどうかを尋ねたいと思います。アニメーションのようなもの。ユーザーにすべてのテキストを表示したい。自動スクロールのようなもの。

編集:xmlではなくコードでそれを行うにはどうすればよいですか?

4

7 に答える 7

13

例 -

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
于 2012-10-25T08:55:11.180 に答える
10

を使用する必要がありますandroid:ellipsize="marquee"

編集:使用できますtextView.setEllipsize(TextUtils.TruncateAt.MARQUEE);

于 2012-10-25T08:53:04.860 に答える
6
<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"
        />

これは、フォーカスされるまでスクロールするのに役立ちます

于 2012-10-25T09:00:35.147 に答える
1

はい、それはマーキーと呼ばれます。以下を に設定しますTextView

android:singleLine="true"
android:ellipsize="marquee"
于 2012-10-25T08:54:04.283 に答える
0

strong text属性を追加する以外に、テキストを移動するには:

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

ビューがフォーカスされている必要があるため、これは次の 2 つの方法で行うことができます。

  1. プログラムで:

    tv.setSelected (true);
    
  2. 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>
    
于 2021-11-12T12:07:18.170 に答える