本文主要是介绍android原生TextView怎么控制是否开始跑走马灯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在实际项目中,经常遇到文本超出控件宽度,显示不全,此时android提供了一个方法:
void android.widget.TextView.setEllipsize(TruncateAt where)
此方法意思就是设置文本超出宽度的展示效果。TruncateAt定义如下:
public static enum TruncateAt {END,MARQUEE,MIDDLE,START;private TruncateAt() {}}
END: 表示在文本展示不全时候,在文本末尾显示省略号
MARQUEE: 表示在文本展示不全时候,以走马灯形式滚动
MIDDLE:表示在文本展示不全时候,在文本中间尾显示省略号
START:表示在文本展示不全时候,在文本开始处显示省略号
默认不设置,表示无以上效果。超出控件部分文字会被截断显示。
所以,可以使用null关闭ellipsize。即:
setEllipsize(null);
// 开始滚动public void startScroll() {setEllipsize(TextUtils.TruncateAt.MARQUEE);}// 停止滚动,回到起点public void stopScroll() {setEllipsize(TextUtils.TruncateAt.END);或者setEllipsize(null);}
//默认滚动@Overridepublic boolean isFocused() {return true;}
示列:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><com.starcor.hunan.MarqueeTextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:layout_height="wrap_content"android:maxLines="1"android:scrollHorizontally="true"android:layout_centerInParent="true"android:singleLine="true"android:textColor="#ff0000"android:focusable="true"android:textSize="24px"android:marqueeRepeatLimit="marquee_forever"android:focusableInTouchMode="true"/>
</FrameLayout>
public class MarqueeTextView extends TextView{public MarqueeTextView(Context context) {super(context);}public MarqueeTextView(Context context, AttributeSet attrs) {super(context, attrs);init();}public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);init();}private void init() {this.setScrollbarFadingEnabled(true);this.setHorizontallyScrolling(true);this.setHorizontalFadingEdgeEnabled(true);this.setSingleLine(true);this.setFocusable(true);this.setMarqueeRepeatLimit(-1);this.setMaxLines(1);}@Overridepublic boolean isFocused() {return true;}}
这篇关于android原生TextView怎么控制是否开始跑走马灯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!