`

TextView 自动滚动(跑马灯)

阅读更多
TextView自带跑马灯的效果,需要设置一下TextView的属性,把显示模式改为“跑马灯”。设置滚动次数。
这些都还不够,因为TextView的跑马灯跑起来,需要此textView得到焦点。所以要想个办法解决一下,让他总是滚动。

简要步骤:

在包中新建一个类,继承TextView。重写isFocused方法,这个方法默认行为是,如果TextView获得焦点,方法返回true,失去焦点则返回false。跑马灯效果估计也是用这个方法判断是否获得焦点,所以把它的返回值始终设置为true。

示例1:
AlwaysMarqueeTextView 类

public class AlwaysMarqueeTextView extends TextView {

public AlwaysMarqueeTextView(Context context) {
      super(context);
}

public AlwaysMarqueeTextView(Context context, AttributeSet attrs) {
      super(context, attrs);
}

public AlwaysMarqueeTextView(Context context, AttributeSet attrs, int defStyle) {
      super(context, attrs, defStyle);
}

@Override
public boolean isFocused() {
      return true;
}
}


在布局XML文件中加入这么一个AlwaysMarqueeTextView
<com.examples.AlwaysMarqueeTextView
android:id="@+id/AMTV1″ 
android:layout_width="fill_parent"
android:layout_height="wrap_content" 
android:lines="1″
android:focusable="true" 
android:focusableInTouchMode="true"
android:scrollHorizontally="true" 
android:marqueeRepeatLimit="marquee_forever"
android:ellipsize="marquee" 
android:background="@android:color/transparent" />


ellipsize属性
设置当文字过长时,该控件该如何显示。有如下值设置:”start”—–省略号显示在开头;”end”——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)
marqueeRepeatLimit属性
在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次。
focusable属性
自己猜测的,应该是能否获得焦点,同样focusableInTouchMode应该是滑动时能否获得焦点。

示例2:
组合View的问题:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 
	android:gravity="center_vertical"
	android:background="@drawable/f_background" 
	android:layout_width="fill_parent"
	android:focusable="true" android:layout_height="50px">
	<TextView android:id="@+id/info_text" 
		android:focusable="true"
		android:layout_width="fill_parent" 
		android:layout_height="wrap_content"
		android:text="test marquee ... "
		android:textColor="@color/black"
		android:singleLine="true" 
		android:ellipsize="marquee"
		android:marqueeRepeatLimit="3"
		android:textSize="18sp" />
	<TextView android:id="@+id/date_texfocusablet" 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content" 
		android:layout_gravity="bottom"
		android:textColor="@color/gray" 
		android:text="2011/04/01"
		android:textSize="12sp"/>
</LinearLayout >


上面示例中2个TextView组合为一个View,由于设置了LinearLayout为focusable而TextView就没法取得焦点了,这样 这个TextView的跑马灯效果就显示不出来,就算你也设置TextView的 android:focusable= "true" 也是 没用的. 这个时候就要使用addStatesFromChildren 这个属性了,在LinearLayout中设置这个属性,然后设置TextView的focusable= "true" 就可以了.关于 addStatesFromChildren的说明:
Sets whether this ViewGroup's drawable states also include its children's drawable states.
分享到:
评论

相关推荐

    android textview 无焦点 跑马灯 水平滚动

    这里,`setMovementMethod(ScrollingMovementMethod())`允许文本自动滚动,而`setSelected(true)`使得TextView在无焦点时也能启动跑马灯。 在创建APK程序时,你需要将这个包含跑马灯效果的TextView集成到你的...

    TextView滚动,跑马灯效果终极解决方案

    "跑马灯"效果,又称为滚动效果,是指当TextView中的文本内容超过其显示区域时,文本会自动从一端滚动到另一端,形成一种循环滚动的视觉效果。这种效果通常用在通知栏、新闻标题或者广告横幅等场景。在本实验中,我们...

    安卓跑马灯相关-TextView滚动跑马灯效果终极解决方案.rar

    总结一下,`安卓跑马灯相关-TextView滚动跑马灯效果终极解决方案.rar`这个压缩包提供的知识点主要涉及: 1. Android TextView的跑马灯效果实现,通过`android:singleLine`和`android:ellipsize`属性。 2. 如何在...

    特效-textView跑马灯

    在Android开发中,"特效-textView跑马灯"是一种常见的UI动态效果,它通常用于显示滚动的文字信息,比如新闻标题或者广告标语。这种效果模仿了实际生活中的跑马灯,即文字在一个固定区域里循环滚动,给人一种连续不断...

    android垂直滚动的textview,仿跑马灯效果

    在Android开发中,实现一个垂直滚动的TextView以达到跑马灯效果是一项常见的需求。这种效果常见于各种信息展示,如公告、广告等,使得较长的文字能够在有限的空间内完整展示。以下将详细介绍如何在Android中创建这样...

    TextView 实现文字滚动播放效果效果(跑马灯)

    而“跑马灯”(Scrolling Text)效果则是`TextView`的一个特殊功能,它可以使超出`TextView`显示范围的文字自动从一端滚动到另一端,形成循环滚动的效果,常用于展示较长的标题或通知信息。下面我们将详细探讨如何...

    文字跑马灯.txt_bitejdi_textview实现简单跑马灯_

    - 跑马灯效果只有在TextView获得焦点时才会启动,因此可能需要在布局中设置自动获取焦点,或者在代码中手动设置`textView.requestFocus();` - 如果文本内容太短,可能无法触发跑马灯效果,确保文本长度超过屏幕...

    自定义TextView实现竖直跑马灯效果,特殊字符串改变颜色

    本文将深入讲解如何通过自定义TextView来实现竖直跑马灯效果,并且在这个过程中,针对特定的字符串进行颜色变化,使得信息展示更加生动活泼。 首先,我们需要了解什么是竖直跑马灯效果。传统的跑马灯效果通常是在...

    使用TextView实现跑马灯效果

    `focusable`和`focusableInTouchMode`设为`true`,确保`TextView`可以获取到焦点,从而启动跑马灯滚动;`scrollHorizontally`属性设为`true`,表示文本将在水平方向上滚动;`marqueeRepeatLimit`属性设为`marquee_...

    textview(跑马灯效果)文字长短不限循环播放

    标题“textview(跑马灯效果)文字长短不限循环播放”所描述的就是这样一个功能,即在TextView中实现一个不受文本长度限制、可以自动循环滚动的跑马灯效果,而且这个效果不需要TextView获取焦点也能运行。...

    android TextView 跑马灯效果

    "跑马灯"效果,又称为滚动文字效果,是指当TextView中的文本长度超过控件宽度时,文本会从右向左自动循环滚动,就像跑马灯一样。这个效果在很多场景下都非常实用,比如通知栏消息、应用标题或者广告横幅等。 实现...

    TextView跑马灯、闪烁和跳动动画

    跑马灯,又称为滚动文字,是指当TextView中的文本内容超出其显示区域时,文本会自动从一端滚动到另一端,仿佛在不断循环移动。实现这个效果,可以通过设置`android:singleLine="true"`和`android:ellipsize="marquee...

    简单的textview 跑马灯效果 可直接使用

    因此,可能需要在代码中手动调用`requestFocus()`方法来让TextView获取焦点,或者通过布局设计让TextView自动获取焦点。 3. **XML布局**: 在布局XML文件中,可以这样定义一个具有跑马灯效果的TextView: ```xml...

    textview跑马灯效果

    在Android开发中,TextView是用于显示单行或多行文本的视图组件,而"跑马灯效果"(Marquee)是一种特殊的效果,使得文本在TextView中像跑马灯一样不断滚动,尤其适用于显示过长的单行文本。这种效果通常在标题或者...

    TextView的跑马灯效果demo

    而"跑马灯"效果则是TextView的一个特殊功能,它可以让文字在TextView中连续滚动,仿佛文字在显示屏上奔跑,这种效果在创建通知、标题或者滚动公告时非常常见。 实现TextView的跑马灯效果主要依赖于`android:single...

    Android ListView,TextView跑马灯Demo

    而跑马灯(Marquee)效果则是TextView的一种特殊滚动显示方式,通常用于显示过长文本时,使其能在有限的空间内循环滚动。本Demo重点是实现ListView的每一项都有TextView的跑马灯效果。 首先,我们来看TextView的...

    TextView跑马灯实例

    android:text="这里是需要滚动的长文本,将自动实现跑马灯效果..." android:singleLine="true" &lt;!-- 已废弃,但某些版本Android仍有效 --&gt; android:maxLines="1" android:ellipsize="marquee" android:...

    完美实现多个textview 的跑马灯效果,外加各个textview的点击事件(用布局移动实现)

    在Android开发中,跑马灯效果通常指的是文本自动滚动显示的效果,这在各种通知、广告或者标题栏等场景中很常见。本示例是关于如何在Android应用中完美实现多个`TextView`的跑马灯效果,并同时添加每个`TextView`的...

    textview文字跑马灯

    在Android开发中,"textview文字跑马灯"是一种常见的UI效果,通常用于展示滚动的文字信息,例如新闻标题或者广告标语。跑马灯效果可以使文本在TextView中循环滚动,为用户界面增添动态感。实现这一效果,我们可以...

    跑马灯效果MarqueTextView textview 循环 跑马灯效果.7z

    这种效果通常用于显示较长的文本,当文本无法在单行完全显示时,可以设置TextView使其自动滚动。 在Android中,TextView的默认属性并不支持跑马灯效果,但可以通过开启特定的属性来实现。`Marquee`效果主要通过以下...

Global site tag (gtag.js) - Google Analytics