随着对于 TextView控件的深入学习,结合别人的例子,自己做了一个滚动的TextView文字滚动的效果。
首先要对xml文件进行重新定义,把布局方式改成LinearLayout(也就是线性布局),自己写一个TextView控件
代码如下
<TextView
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:layout_margin="10dp"
android:background="#FFFFFF"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:padding="10dp"
android:textColor="#000"
android:textSize="20dp" />
- android:elipsize: 如果文本长度大于TextView的显示长度,则隐藏那一部分,可赋值为:none(不隐藏)、start(隐藏开始)、middle(隐藏中间)、end(隐藏结束)、marquee(滚动效果)。
- android:marqueRepeatLimit:设定需要重复动画的次数,传递一个int值,-1为无限循环。
- android:focusable:是否允许获得焦点,传递一个bool值。
- android:focusableInTouchMode:是否在获得焦点时对控件有联系,传递一个bool值。
代码如下
TextView tv ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
tv = (TextView)this.findViewById(R.id.textview);
String str = "我将应鲁哈尼总统邀请对伊朗进行国事访问,就新形势下深化中伊关系及重大国际和地区问题深入交换意见,共同推动中伊关系迈上新台阶。";
CharSequence charstr = Html.fromHtml(str);
tv.setText(charstr);
tv.setMovementMethod(LinkMovementMethod.getInstance());
}
其中用到的CharSequence是一个接口,代表的是一个有序字符集合,对于一个抽象类或者是接口类,不能使用new来进行赋值,所以CharSequence
charstr=,直接赋值就行了,后面调用的是Html的forHtml方法,把字符串传过去。这样调用以上代码就能实现文字在TextView实现滚动效果了。