在Android中要顯示跑馬燈是比較容易的,只要設(shè)置2個屬性就可以了:
android:singleLine="true"
android:ellipsize="marquee"
但
是要顯示跑馬燈該View必需是可以取得焦點(diǎn)的,只有在取得焦點(diǎn)的情況下跑馬燈才會出現(xiàn).
如果是組合View的情況下就有問題了,
如下一個組合View:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center_vertical"
android:background="@drawable/f_background"
android:layout_width="fill_parent"
android:focusable="true"
android:layout_height="50px">
<TextView
android:id="@+id/info_text"
android:focusable="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="test marquee 




.. "
android:textColor="@color/black"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="3"
android:textSize="18sp"
/>
<TextView
android:id="@+id/date_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:textColor="@color/gray"
android:text="2010/05/28"
android:textSize="12sp"
/>
</LinearLayout>
上面示例中2個TextView組合為一個View,由于設(shè)置了LinearLayout為focusable而TextView就沒法取得焦點(diǎn)了,這樣
這個TextView的跑馬燈效果就顯示不出來,就算你也設(shè)置TextView的
android:focusable=
"true"
也是沒用的. 這個時候就要使用addStatesFromChildren 這個屬性了,在LinearLayout中設(shè)置這個屬性,
然后設(shè)置TextView的focusable=
"true"
就可以了.關(guān)于
addStatesFromChildren的說明:
Sets whether
this
ViewGroup's drawable
states
also include its children's drawable
states.
可以正常顯示的代碼:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center_vertical"
android:background="@drawable/zixun_background"
android:layout_width="fill_parent"
android:addStatesFromChildren="true"
android:layout_height="50px">
<TextView
android:id="@+id/info_text"
android:focusable="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" "
android:textColor="@color/black"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="3"
android:textSize="18sp"
/>
<TextView
android:id="@+id/date_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:textColor="@color/gray"
android:text="2010/05/28"
android:textSize="12sp"
/>
</LinearLayout>