安卓系统中使用TextView实现文字跑马灯效果

  

<强>通常情况下我们想实现文字的走马灯效果需要在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获取焦点。

  

是否能够焦点,布尔型的

  

布尔型的。

  

在触摸模式下是否获取焦点。

  

当你设置了这些部署在手机上,很明显会实现走马灯效果。效果如下:

  

 Android中使用TextView实现文字跑马灯效果

  

可是如果你在这个活动实例中再添加一个编辑框控件,点击编辑框后就会发现走马灯效果消失了。

  

就像这样

  

 Android中使用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实现文字跑马灯效果