Android_TextView之跑马灯效果

  对于android控件中的TextView,相信大家一定不陌生,在显示文本内容时十分方便。不过我在使用时遇到一个小问题,就是当文字交多时,如何为用户进行展示。今天就为大家介绍一种解决方案--跑马灯效果。

  首先为了达到这个效果,我在访问了一下度娘,得到的答案是这样的,看似解决了,却存在一个问题,先给大家看一下效果:

代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
    android:orientation="vertical"
    >

    <TextView
        android:text="@string/text"
        android:textSize="20sp"
        android:singleLine="true"//保证文本内容单行显示
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:id="@+id/textView1" />

    <TextView
        android:text="@string/text"
        android:textSize="20sp"
        android:singleLine="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:id="@+id/textView2" />
<LinearLayout>

  红色标注的即为广大网友提供的解决方法,那效果到底如何呢?经过测试显示,当只有一个TextView控件时完美达到预期,但是当View中出现两个以上TextView控件时效果,将不复存在,所以这种解决方案不是十分的完美。

  那是什么原因导致的呢?其实很简单,是因为当存在两个TextView时,默认选中其中的一个,另一个则不被选中,所以显示时只有一个有这种效果,现在就为大家提供一个解决方法:

  新建一个free_TextView.java Class文件,使其继承至TextView,然后实现TextView的三个构造方法,方法无需进行任何修改。

代码:

package com.example.administrator.textview_new;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

/**
 * Created by Administrator on 2015/2/3.
 * 自定义TextView控件
 */
public class free_TextView extends TextView{
    public free_TextView(Context context) {
        super(context);
    }

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

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

    @Override
    public boolean isFocused() {
        return true;//一定要设置为true这样才能保证所有的TextView均为选中状态
    }
}

布局文件代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
    android:orientation="vertical"
    >

    <com.example.administrator.textview_new.free_TextView
        android:text="@string/text"
        android:textSize="20sp"
        android:singleLine="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:id="@+id/textView1" />

    <com.example.administrator.textview_new.free_TextView
        android:text="@string/text"
        android:textSize="20sp"
        android:singleLine="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:id="@+id/textView2" />

</LinearLayout>

  到这里我们的跑马灯效果就算大功告成。

时间: 2024-10-10 06:08:52

Android_TextView之跑马灯效果的相关文章

练习:WinForm 跑马灯效果+Timer

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Timer { public partial class Form1 : Form { public Form1

Android TextView跑马灯效果

TextView跑马灯简单效果 <!--简单示例--> <TextView android:text="@string/longWord" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView1" android:ellipsize="marquee&quo

android 怎么实现跑马灯效果

自定义控件 FocusedTextView, 使android系统误以为它拥有焦点 1 public class FocusedTextView extends TextView { 2 public FocusedTextView(Context context, AttributeSet attrs, int defStyle) { 3 super(context, attrs, defStyle); 4 // TODO Auto-generated constructor stub 5 }

框架,锚点,背景音乐,嵌入视频和跑马灯效果

框架,iframe有点过时,会在部分浏览器出现一些奇怪的问题:设置三个属性: 1.src,框架默认的显示路径 2.name,让超链接的target属性与name值相等,就可以将超链接网页在框架中打开 3.框架的宽度和高度 站点:实际上就是一个文件夹,单独起了一个名字.统一来管理所有页面,就是一个站点,称之为网站 锚点: 书写格式:<a href="#锚点位置对应的名称">内容</a> --#是在本页面中 <a name="锚点位置的名称"

jCarousel Lite 实现图片跑马灯效果

官方网站:http://www.gmarwaha.com/jquery/jcarousellite/ demo: <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script src="http://libs.baidu.com/jquery/1.9.0/jquer

Android界面(1) 使用TextView实现跑马灯效果

方法一:(只能实现单个TextView的跑马灯效果)在TextView添加以下控件 android:singleLine="true"只能单行,超出的文字显示为"..." android:ellipsize="marquee"省略号没有,但没有跑马灯效果 android:focusable="true" android:focusableInTouchMode="true" 方法二:(可以实现多行TextV

安卓TextView的跑马灯效果

跑马灯效果的实现非常简单,可分为两步 1.定义一个View继承TextView,重写isFocused方法 package com.jsako.marquee; import android.content.Context; import android.util.AttributeSet; import android.view.ViewDebug.ExportedProperty; import android.widget.TextView; public class MarqueeTex

2、按下按键S1控制LED1.LED2.LED3实现跑马灯效果(CC2540开发寄存器设置)

按下按键S1控制LED1.LED2.LED3实现跑马灯效果 1 /**************************************************************************** 2 * 文 件 名: main.c 3 * 作 者: Amo [ www.amoMcu.com 阿莫单片机] 4 * 修 订: 2014-04-08 5 * 版 本: 1.0 6 * 描 述: 按下按键S1控制LED1.LED2.LED3实现跑马灯效果 7 ***********

Android 跑马灯效果

<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:text="我是一只小小小小鸟,怎么飞也飞不高啊,我有一个梦想,正在很努力地去实现" android:singleLine="true" android:ellipsize=&q