XML布局:
- <TextView
- android:layout_width="100dip"
- android:layout_height="wrap_content"
- android:ellipsize="marquee"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:marqueeRepeatLimit="marquee_forever"
- android:singleLine="true"
- android:text="走马灯xml布局实现,哈哈。。。。" />
自定义控件:
- package com.android.widget;
- import android.content.Context;
- import android.graphics.Rect;
- import android.text.TextUtils.TruncateAt;
- import android.util.AttributeSet;
- import android.widget.TextView;
- /**
- *
- * 一直走马灯效果控件
- *
- * @author zuolongsnail
- */
- public class CustomMarqueeTextView extends TextView {
- public MyMarqueeTextView(Context context) {
- super(context);
- createView();
- }
- public MyMarqueeTextView(Context context, AttributeSet attrs) {
- super(context, attrs);
- createView();
- }
- public MyMarqueeTextView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- createView();
- }
- private void createView() {
- setEllipsize(TruncateAt.MARQUEE);
- setMarqueeRepeatLimit(-1);
- setFocusableInTouchMode(true);
- }
- @Override
- protected void onFocusChanged(boolean focused, int direction,
- Rect previouslyFocusedRect) {
- if (focused) {
- super.onFocusChanged(focused, direction, previouslyFocusedRect);
- }
- }
- @Override
- public void onWindowFocusChanged(boolean focused) {
- if (focused) {
- super.onWindowFocusChanged(focused);
- }
- }
- @Override
- public boolean isFocused() {
- return true;
- }
- }
在xml中的使用方法:
- <com.android.widget.CustomMarqueeTextView
- android:id="@+id/custom_marquee_textview"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />