Android系统中TextView实现滚动效果
16lz
2021-01-23
1.android:ellipsize属性:
android:ellipsize="start" 省略号在开头
android:ellipsize="middle" 省略号在中间
android:ellipsize="end" 省略号在结尾
android:ellipsize="marquee" 跑马灯显示
实现滚动效果条件:
1、android:ellipsize=”marquee” 2、TextView必须单行显示,即内容必须超出TextView大小 3、TextView要获得焦点才能滚动 实现代码:xml:
android:singleLine="true" //单行显示,singleLine="true"已经过时了,这种:maxLines="1"android:ellipsize="marquee" //跑马灯显示android:marqueeRepeatLimit="marquee_forever"//永久滚动android:focusable="true" //控件是否能够获取焦点android:focusableInTouchMode="true" //是否在触摸模式下获得焦点
上面只是单行滚动,所以需要让其他的控件也获得焦点,个人认为就是让其他的控件都感觉自己获得了焦点,所以都会滚动~但是必须重写isFocuse()方法。
所以就需要自定义一个TextView,继承TextView,并且重写isFocuse()方法,让它永远返回true
public class MyTextView extends TextView { public MyTextView (Context context) { super(context); } public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); } public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean isFocused() { return true; }}
接下来布局文件中使用自定义的TextView就好。包名.自定义TextView
<com.xxx.xxx.xxx.MyTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" //singleLine="true"已经过时了,这种:maxLines="1" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:focusable="true" android:focusableInTouchMode="true" />
更多相关文章
- Android:控件属性
- [android]控件ProgressBar/ProgressDialog/SeekBar简介
- android TextView 控件居右显示
- Android 基本UI控件
- android EditText 不自动获取焦点并弹出键盘
- Android交互式视觉设计控件二
- 关于Android开发的editText控件怎…
- Android 基本控件 View 类的常用xml 属性(初级详解)
- android 控件-TextView用法整理