TextViewでスクロール表示の効果を実現

2249 ワード

一.TextViewベース
TextViewで文字スクロールを実現するには、以下のポイントが必要です.1.文字の長さは表示可能範囲より長い:android:singleLine=「true」
2.スクロール可能、または表示スタイルの設定:android:ellipsize=「marquee」
3.TextViewはフォーカスを取得した後にのみ非表示テキストをスクロール表示するため、パッケージにクラスを新規作成し、TextViewを継承する必要があります.isFocusedメソッドを書き換えます.このメソッドのデフォルトの動作は、TextViewがフォーカスを取得した場合、メソッドはtrueを返し、フォーカスを失った場合falseを返します.ランニングライト効果推定もこの方法でフォーカスが得られるか否かを判断するので,その戻り値を常にtrueに設定する.
TextViewプロパティの説明:
Ellipsizeプロパティ
テキストが長すぎる場合のコントロールの表示方法を設定します.「start」—-省略記号が先頭に表示されます.end」--省略記号は末尾に表示されます.middle—-省略記号が中央に表示されます.」marquee」--ランニングライトで表示(アニメーションの横移動)
marqueeRepeatLimitプロパティ
ellipsizeでmarqueeを指定した場合、繰り返しスクロールする回数を設定し、marquee_に設定します.foreverは無限次を表す.
义齿
フォーカスを得ることができるかどうか、同じくfocusableInTouchModeがスライド時にフォーカスを得ることができるかどうか.
二.インプリメンテーション
1、frameworksbasecorejavaandroidwidgetの下でAlwaysMarqueeTextViewを作成する.JAva、内容は以下の通りです.
package android.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
import android.widget.RemoteViews.RemoteView;
@RemoteView
public class AlwaysMarqueeTextView extends TextView {
public AlwaysMarqueeTextView(Context context) {
 super(context);
}
public AlwaysMarqueeTextView(Context context, AttributeSet attrs) {
 super(context, attrs);
}
public AlwaysMarqueeTextView(Context context, AttributeSet attrs,
  int defStyle) {
 super(context, attrs, defStyle);
}
@Override
public boolean isFocused() {
 return true;
}
}
、update-apiを実行するコマンド:
./mk update-api
3、工事全体の再コンパイル
4、対応するTextViewコントロールを修正する
-    <TextView 
+    <AlwaysMarqueeTextView 
         android:id="@+id/item_title" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content"
         android:layout_toRightOf="@id/item_icon"
         android:layout_marginBottom="6dip"
         android:textAppearance="?android:attr/textAppearanceMedium"
+        android:focusableInTouchMode="true"
         android:singleLine="true"
-        android:ellipsize="none"
+        android:ellipsize="marquee"
+        android:marqueeRepeatLimit="marquee_forever"
         />