7 使用TextView實現跑馬燈

2022-09-19 21:42:14 字數 1524 閱讀 1665

首先給textview新增乙個單行限制:

android:singleline="true"

- 解決方案一

更改textview的乙個屬性:

android:ellipsize="marquee"

即省略多餘部分的意思,包括去掉省略號(然而我在android 6上面並沒有省略省略號)。

然而,該有的東西都被省略了。不滿意。

- 解決方案二

在方案一的基礎上。新增如下兩個屬性:

android:focusable="true" android:focusableintouchmode="true"

這樣可以實現當行的迴圈跑馬燈。

然而,如果同時有兩個類似的textview出現時,會發現只有乙個有跑馬燈的效果,另乙個則失效,因此該功能也是不夠的。

- 解決方案三

在之前兩個方案的基礎上,自己對textview進行改寫。

1.先新建乙個類,比如marqueetext.j**a ,且這個類繼承了textview。

只會我們對這個類進行如下的改寫,新增所需的幾個建構函式。

2.要對isfocused()進行重寫,使返回值都為true。

這是因為,之前的textview控制項在使用時,第乙個標籤預設獲取的了焦點,而之後的textview則失去了焦點,因而不能實現跑馬燈效果。

3.如果想要一直迴圈的話,應該加上android:marqueerepeatlimit="marquee_forever"。否則迴圈兩次。

之後layout中,可以直接使用包名作為新的標籤,如 ,直接可實現跑馬燈效果。

public class marqueetext extends textview public marqueetext(context context, attributeset attrs) public marqueetext(context context, attributeset attrs, int defstyleattr) @override public boolean isfocused() }

- 總結

更改textview的乙個屬性:

android:ellipsize="marquee"

新增如下兩個屬性:

android:focusable="true"

android:focusableintouchmode="true"

3.新建乙個類繼承了textview的類,並重寫isfocused()使預設返回true。

4.加上android:marqueerepeatlimit="marquee_forever"可以一直迴圈,否則預設迴圈兩次。

使用TextView實現跑馬燈的效果

1 定義textview標籤的4個屬性 android singleline true 使其只能單行android ellipsize marquee 去掉省略號 android focusable true 使其迴圈 android focusableintouchmode true 為了永久的滾...

TextView實現跑馬燈效果

這段 粘上就可用 顯示跑馬燈效果的前提條件就是你的文字內容要比顯示文字的外部元件長,即外部元件無法完整的顯示內部的文字內容。因此要實現跑馬燈效果有兩種設定方式 1 layout width 設定為成比文字內容短的固定值,最好不要寫成wrap content或者fill parent。2 如果layo...

TextView跑馬燈的實現

在textview屬性中有這樣的乙個屬性 android ellipsize 設定當文字過長時,該控制項該如何顯示。有如下值設定 start 省略號顯示在開頭 end 省略號顯示在結尾 middle 省略號顯示在中間 marquee 以跑馬燈的方式顯示 動畫橫向移動 好像跑馬燈這種效果已經不用咱們來...