<强>通常情况下我们想实现文字的走马灯效果需要在xml文件中这样设置强>
& lt; TextView android: layout_width=" wrap_content " android: layout_height=" wrap_content " android:单行模式=" true " android: ellipsize=罢信啤? android: focusable=" true " android: focusableInTouchMode=" true " android:文本=癅string/抒情”/比;>之前大家都懂的就不解释了。
布尔型的是否让文字只显示在一行而不是多行显示
滚动效果,里面有(没有,开始、中间、结束字幕),其中没有表示正常显示文字,即使一行显示不完全,也无任何效果.star,就是假如文字在一行显示不完全,在开头显示,同理,最后一行的最后一个文字后面加…,中间就是所有文字显示在一行,如果文字太多,在中间加入……,可能我解释的不清楚,大概就是这样读者可以自己测试一下。至于选框就是文字走马灯效果啦。
当然,如果你只设置了这些文字还是不会滚动的。还要使TextView获取焦点。
是否能够焦点,布尔型的
布尔型的。
在触摸模式下是否获取焦点。
当你设置了这些部署在手机上,很明显会实现走马灯效果。效果如下:
可是如果你在这个活动实例中再添加一个编辑框控件,点击编辑框后就会发现走马灯效果消失了。
就像这样
<强>这是为什么呢? 强>
因为点击编辑框,编辑框会获取屏幕焦点,由于通常情况下屏幕的焦点只能有一个,TextView失去了焦点,也就不会滚动了。这时候我们要怎么办呢?
那就欺骗系统呗。告诉它我们的TextView也是有焦点的。没错两个焦点。
如何做?我们就新建一个我们自己的TextView呗。
首先我们新建一个名为MyTextView继承TextView的类,重写里面的方法,其中有三个方法是必须的,就像我们总在MainActivity里面重写OnCreate方法一样,作用是什么我也不清楚。好奇的同学请百度。哈哈~
<强>我们要知道系统是如何判断一个控件是否获取焦点了呢& # 63;强>
公共布尔isFocused () {//TODO自动生成方法存根 返回super.isFocused (); }就是这个方法。前面说了我们要欺骗系统我们的TextViwe是有焦点的,所以我们在这个方法里面一直还真就好了哈哈,是不是特流氓…
做完了这些别忘记把我们的TextView部署到布局文件中哦
<强>布局代码:强>
& lt; LinearLayout xmlns: android=" http://schemas.android.com/apk/res/android " android: layout_width="宽和" android: layout_height="宽和" 面向android:=按怪薄北? & lt; com.example.textview.MyTextView android: layout_width=" wrap_content " android: layout_height=" wrap_content " android: ellipsize=罢信啤? android:单行模式=" true " android:文本=癅string/抒情”/比; EditText & lt; android: layout_width="宽和" android: layout_height=" wrap_content "/比; & lt;/LinearLayout> >之前<强> MainActivity.class 强>
包com.example.textview; 进口android.os.Bundle; 进口android.app.Activity; 进口android.view.Menu; 公开课MainActivity延伸活动{ @Override 保护空白> 包com.example.textview; 进口android.content.Context; 进口android.util.AttributeSet; 进口android.view.WindowId.FocusObserver; 进口android.widget.TextView; 公开课MyTextView延伸TextView { 公共MyTextView(上下文语境、AttributeSet attrs int defStyle) { 超级(上下文、attrs defStyle);//TODO自动生成构造函数存根 } 公共MyTextView(上下文语境,AttributeSet attrs) { 超级(上下文,attrs);//TODO自动生成构造函数存根 } 公共MyTextView(上下文语境){ 超级(上下文);//TODO自动生成构造函数存根 } @Override 公共布尔isFocused () {//TODO自动生成方法存根 返回true; } } >之前对了附上效果图。都看到光标在编辑框了~
安卓系统中使用TextView实现文字跑马灯效果