在实际项目中,经常遇到文本超出控件宽度,显示不全,此时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);
}
//默认滚动
@Override
public boolean isFocused() {
return true;
}
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);
}
@Override
public boolean isFocused() {
return true;
}
}