4

アラビア語(右から左)のテキストが1行のテキストビューがあります。テキストの内容は時間とともに増加し、最後の(左端の)部分が常に表示されます。水平スクロールバーは最初は右に設定されており、テキストが増えると自動で左にスクロールします。

以下のコードは、2.3Androidフォンでうまく機能します。これはlayout.xmlから来ています

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="none"
    android:fadingEdge="horizontal"
    android:gravity="right"
    android:scrollHorizontally="true"
    android:scrollbars="horizontal"
    android:singleLine="true"
    android:text="@string/txt_start"
    android:textAppearance="?android:attr/textAppearanceLarge" />

これは、アクティビティのonCreate()メソッドにあります

tv = (TextView) findViewById(R.id.textView1);
tv.setMovementMethod(new ScrollingMovementMethod());

問題は、Android4.0以降を搭載した携帯電話でのテキストビューの動作に一貫性がないことです。水平スクロールバーは最初は右側に配置されていないため、TextViewは最初は空白になっています。空白のtextViewをスクロールしようとすると、テキストが表示されます。追加のテキストを追加すると、スクロールバーはスクロールされて新しいテキストが表示されませんが、手動でテキストをスクロールすると表示されます。

stackoverflowを検索しましたが、以下のプロパティを追加しようとしましたが成功しませんでした。

android:focusable="true"
android:focusableInTouchMode="true"
4

3 に答える 3

1

で TextView のスクロールをアニメーション化したかった私の場合、これらのソリューションはどれも機能しませんでしたandroid:gravity="right"。ただし、TextView の重力を左に保ちながら、RelativeLayout コンテナー内で右に揃えて配置することで解決した簡単な回避策は次のとおりです。

<RelativeLayout
  android:orientation="horizontal"
  android:layout_width="match_parent"
  android:layout_height="wrap_content">
  <AutoScrollingTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:gravity="left"
    android:singleLine="true"
    android:ellipsize="none">
</RelativeLayout>
于 2013-04-25T11:52:40.190 に答える
0

この例を試してみてください。うまくいくはずです:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <TextView
         android:id="@+id/myText"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:text="@string/myscroll"
         android:ellipsize="marquee"
         android:singleLine="true"
         android:scrollHorizontally="true"
         android:marqueeRepeatLimit="10"
>
</LinearLayout>

: マーキーをテストするときは、Eclipse 内のデザイン ビューでテストしないでください。emulator\device で試してください。

また、コードにスクロール効果を追加する場合:

TextView tView = (TextView) findViewById(R.id.myText);
tView.stSelected(true);

マーキーの最後でマーキーをノンストップでスクロールするには、次のようにします。

android:marqueeRepeatLimit=”marquee_forever”
于 2013-03-26T17:07:12.747 に答える
0

重力の Left/Right は非推奨であることがわかりました。開発者は Start/End を使用する必要があります。テキストをスクロールするには、「wrap_content」をその幅に設定する必要があり、さらに textDirection を RTL に設定する必要があります。理由は不明ですが、textDirection はプログラムでは機能しませんでしたが、xml では機能しました。

このコードは、Android のすべての API バージョンでうまく機能します。

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="end"
        android:textDirection="rtl"
        android:scrollHorizontally="true"
        android:scrollbars="horizontal"
        android:singleLine="true"
        android:ellipsize="none"
        android:text="@string/txt_start"
        android:textAppearance="?android:attr/textAppearanceLarge" />
于 2013-03-28T08:06:18.360 に答える