所谓跑马灯效果就是当文字超过控件所能容纳的空间时,在控件内滚动的效果。
要实现这样的效果需要在布局文件中加上:
android:singleLine=”true” android:ellipsize=”marquee” android:focusableInTouchMode=”true” android:focusable=”true”
但是这种跑马灯只有在控件获得焦点时在能滚动,要想让控件里的内容一直滚动就要定制该控件,重写里面的三个方法:
package cn.etzmico.marqueetest; import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; import android.widget.Button; public class MarqueeButton extends Button { public MarqueeButton(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { // TODO Auto-generated method stub if(focused) super.onFocusChanged(focused, direction, previouslyFocusedRect); } @Override public void onWindowFocusChanged(boolean hasWindowFocus) { // TODO Auto-generated method stub if(hasWindowFocus) super.onWindowFocusChanged(hasWindowFocus); } @Override public boolean isFocused() { return true; } }
<cn.easymobi.application.memorytest.MarqueeButton android:layout_width=”216dip” android:layout_height=”wrap_content” android:id=”@+id/btSecond” android:background=”@drawable/button_test2″ android:layout_marginTop=”15dip” android:text=”@string/calculate” android:ellipsize=”marquee” android:gravity=”center” android:textColor=”@color/white” android:textStyle=”bold” android:focusable=”true” android:marqueeRepeatLimit=”marquee_forever” android:focusableInTouchMode=”true” android:scrollHorizontally=”true” android:singleLine=”true” android:paddingLeft=”50dip” android:paddingRight=”50dip” android:textSize=”20dip” />