一、新建一個PRoject。
二、添加兩個TextView,并設(shè)置它的屬性。
<TextView android:id="@+id/tv_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="瘋狂源自夢想,技術(shù)成就輝煌,好好學(xué)習(xí),天天向上!!!" android:textSize="24dp" android:singleLine="true" android:ellandroid:singleLine=”true” 設(shè)置單行顯示。 如果和layout_width一起使用,當(dāng)文本不能全部顯示時,后面用“…”來表示。android:ellipsize=”marquee” .設(shè)置可滾動,或顯示樣式
android:focusable=”true”:設(shè)置TextView自動獲得焦點 android:focusableInTouchMode=”true”:通過觸摸獲得焦點
這些屬性設(shè)置完畢之后,運行一下,你會發(fā)現(xiàn)第一個TextView會有跑馬燈效果,第二沒有,這是因為程序一運行,先是第一個TextView或的焦點,一直沒有丟失,所以第二個TextView才獲取不到。也就沒有效果。
如果需要兩個TextView都能完美運行,自定義TextView,這時我們需要新建一個類來繼承TextView。實現(xiàn)它的三個構(gòu)造方法。并覆蓋isFocused()方法,返回值設(shè)置為true,這樣就強(qiáng)制性要求了這自定義TextView子類都獲得焦點。
public class MarqueeText extends TextView{ public MarqueeText(Context context) { super(context); } public MarqueeText(Context context, AttributeSet attrs) { super(context, attrs); } public MarqueeText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean isFocused() { return true; }}然后我們在把TextView換成我們自定義的TextView,就OK了。
<com.zp.administrator.marqueetextviewdemo.MarqueeText android:id="@+id/tv_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="瘋狂源自夢想,技術(shù)成就輝煌,好好學(xué)習(xí),天天向上!!!" android:textSize="24dp" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:textColor="#b1704a" /> <com.zp.administrator.marqueetextviewdemo.MarqueeText android:layout_below="@+id/tv_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:text="瘋狂源自夢想,技術(shù)成就輝煌,好好學(xué)習(xí),天天向上!!!" android:textSize="64dp" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:textColor="#ff0000" />接著再運行就可以看到兩個效果都實現(xiàn)了。
ps:今天是自己第一次寫技術(shù)博客,雖然這只是開始的一小步,卻是我作為程序員的一大進(jìn)步。O(∩_∩)O~
新聞熱點
疑難解答