TextViewは常にランニングライトの効果を表示します


まず、TextViewを使用して走馬灯形式のスクロール表示を実現するには、2つのプロパティを設定するだけです.
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"


ただし、TextViewのスクロール表示には、TextViewがfocus状態である必要があるという前提があります.TextViewがフォーカスを失うと、TextViewはスクロールを停止します.無限スクロールを実現するには、もちろん焦点から始める必要があります.もちろん、直接requestFocus()は無理ですが、ここでは別の方法を使いました.textViewにはisFocused()というメソッドが観察され、ドキュメント内のコメントは次のようになります.
/**
* Returns true if this view has focus
*
* @return True if this view has focus, false otherwise.
*/

つまりTextViewがフォーカスを持つとtrueに戻る.同時に,TextViewでは判断条件としてこのメソッドを直接呼び出すところが多く,最も重要なのはpublicと宣言されていることが分かった.OK、実現方法が明らかになった!
 
たとえば、クラス名をAlwaysMarqueeTextViewと書き、TextViewから継承し、override isFocused()メソッドをoverride isFocused()メソッドとして返し、次のようにします.
 
 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; } }