您好,登錄后才能下訂單哦!
以前就遇到過這個問題,今天重新拾起來。
跑馬燈效果其實就是當文字超過TextView控件寬度的時候,使用滾動的方式顯示出來:
方法1:(直接xml搞定)
Android系統中TextView實現跑馬燈效果,必須具備以下幾個條件:
1、android:ellipsize=”marquee”;
2、TextView必須單行顯示,且內容必須超出TextView寬度;
3、TextView要獲得焦點才能滾動。
xml代碼如下:
<TextView android:id="@+id/alarm_location" android:layout_width="20dp" android:padding="@dimen/space_4" android:layout_height="wrap_content" app:layout_rowWeight="2" app:layout_columnWeight="2" android:text="0" android:ellipsize="marquee" android:focusableInTouchMode="true" android:singleLine="true" android:focusable="true"/>
其中:ellipsize屬性指的是文字長度超過TextView的長度的時候的顯示方式,具體參數有
**Android:ellipsize=”start”—–省略號顯示在開頭 “…pedia”
android:ellipsize=”end”——省略號顯示在結尾 “encyc…”
android:ellipsize=”middle”—-省略號顯示在中間 “en…dia”
android:ellipsize=”marquee”–以橫向滾動方式顯示(需獲得當前焦點時)**
方法2(自定義控件)
我看了自己以前的實現方式是這樣,也許在低版本的平臺上第一種方式適配不好吧。如果達不到要求可以試試這種方式。
TextVeiwSlide.Java
package edu.hrbeu.ice.mobilecar.widget; import android.content.Context; import android.util.AttributeSet; import android.widget.TextView; /** * @author 編寫人: xiaox * @date 創建時間: 2017/1/10 * @Description 功能描述: 該類 */ public class TextViewSlide extends TextView { public TextViewSlide(Context context) { super(context); } public TextViewSlide(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean isFocused() { return true; } }
activity_main.xml
<edu.hrbeu.ice.mobilecar.widget.TextViewSlide android:id="@+id/alarm_type" android:layout_width="@dimen/item_width" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_gravity="center_vertical" android:layout_weight="1" android:padding="8dp" android:marqueeRepeatLimit="marquee_forever" android:ellipsize="marquee" android:scrollHorizontally="true" android:focusableInTouchMode="true" android:singleLine="true" tool:text="asda" />
可以看到第二種方式也就是在自定義控件中獲取了該控件的焦點。感覺和第一種沒有區別。
目前在android7.1.1和android4.4上實驗兩種方法都沒有問題。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。