Android在有时候在显示文字时候宽度不够,换行感觉不好看有点别扭影响整体美观,于是就想让其滚动显示。
最通用的做法就是写个通用的样式文件:
<style name="marquee_text">
<item name="android:ellipsize">marquee</item>
<item name="android:focusable">true</item>
<item name="android:focusableInTouchMode">true</item>
<item name="android:marqueeRepeatLimit">marquee_forever</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:singleLine">true</item>
</style>
但是在有的时候加了上面的样式文件超出宽度的文本还是不滚动,这时候需要重写一下TextView,但是,请注意,请注意,请注意,在这个含有这个自定义TextView的界面最好不要含有输入法输入的EditText,因为这个TextView获得焦点了,会出现输入法不自动关闭、EditText获取到了焦点但是不显示输入法等问题。
public class MarqueeView extends TextView {
public MarqueeView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MarqueeView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public MarqueeView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
@ExportedProperty(category = "focus")
public boolean isFocused() {
// TODO Auto-generated method stub
return true;
}
}