import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.widget.TextView; /**
* 有焦点的TextView
*/
public class FocusedTextView extends TextView { //开发者通过代码创建对象时, 走此构造方法
public FocusedTextView(Context context) {
this(context, null);
System.out.println("构造方法1");
//initView();
} //AttributeSet:属性集合
//当控件配有属性时, 走此构造方法, 由系统底层创建对象
public FocusedTextView(Context context, AttributeSet attrs) {
this(context, attrs, -1);
System.out.println("构造方法2");
//initView();
} //defStyleAttr: 样式
//当控件配有样式时, 走此构造方法, 由系统底层创建对象
public FocusedTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
System.out.println("构造方法3");
initView();
} //初始化当前控件
private void initView() {
// android:ellipsize="marquee"
// android:focusable="true"
// android:focusableInTouchMode="true"
// android:singleLine="true"
setEllipsize(TextUtils.TruncateAt.MARQUEE);//跑马灯效果
//setFocusable(true);//有焦点
//setFocusableInTouchMode(true);//有焦点
setSingleLine();//只显示一行
} //表示当前TextView是否有焦点
//问题: 当同时多个TextView进行跑马灯效果时, 只有一个有焦点,可以跑起来
//解决办法: 重写isFocused, 强制返回true
@Override
public boolean isFocused() {
return true;//强制返回true, 表示永远有焦点
}
}

package com.loaderman.textviewdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Html;
import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.tv);
String newMessageInfo = "<font color='red'><b>最新消息:</b></font>苹果8要发布了,小伙伴们你们心动了,心动不如行动哦!";
tv.setText(Html.fromHtml(newMessageInfo));
}
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.jcf.textviewdemo.MainActivity">
<com.loaderman.textviewdemo.FocusedTextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:textSize="20sp"
android:layout_height="wrap_content"/>
</LinearLayout>

效果图:

在开发中在布局中设置跑马灯效果.当有多个事,可能会市区焦点,但不到所要的效果,自定义可以解决开发中这类问题!

自定义有焦点的TextView实现广告信息左右一直滚动的跑马灯效果的更多相关文章

  1. Android TextView 横向滚动(跑马灯效果)

    Android TextView 中当文字比較多时希望它横向滚动显示,以下是一种亲測可行的方法. 效果图: 1.自己定义TextView,重写isFocused()方法返回true,让自己定义Text ...

  2. TextView跑马灯效果

    转载:http://www.2cto.com/kf/201409/330658.html 一.只想让TextView显示一行,但是文字超过TextView的长度怎么办?在开头显示省略号 android ...

  3. Android学习总结——TextView跑马灯效果

    Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1.android:ellipsize="marquee" 2.TextView必须单行显示,即内容必须 ...

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

    方法一:(只能实现单个TextView的跑马灯效果)在TextView添加以下控件 android:singleLine="true"只能单行,超出的文字显示为"...& ...

  5. Android 使用TextView实现跑马灯效果

    前言 我们在开发中经常会遇到一个小问题.比如下面一个小例子: 这个文字太长,单行中导致无法全部显示出来,这就是今天要实现的功能. 当然,百度中也有很多这种解决方案. 其中有一种,例如: <Tex ...

  6. TextView的跑马灯效果实现

    TextView的跑马灯效果实现 问题描述 当文字内容过长,但是只允许显示一行时,可以将文字显示为跑马灯效果,即文字滚动显示. 代码实现 第一种方法实现 先查询TextView控件的属性,得到以下信息 ...

  7. ListView 中的TextView实现跑马灯效果

    案例:怎么样在一个ListView中含有TextView的item中实现字母滚动呢.这个在一些特定的场合经常用得到.如下图,当焦点位于某个item的时候其内容就自动滚动显示 要实现这样的效果,废话不多 ...

  8. TextView: android:ellipsize="marquee" 跑马灯效果无效的问题

    今天练习的时候想实现一个文字的跑马灯效果,本来想自己手动实现的,不过突然想起来android里的TextView属性似乎自带了这个效果,叫: android:ellipsize ,平时都是把它的属性值 ...

  9. Flex “跑马灯”效果(自定义“跑马灯”控件)

    自定义类(BroadCastMarquee.as): package marquee { import flash.events.MouseEvent; import flash.events.Tim ...

随机推荐

  1. js基本事件

    1:单击事件 --onclick function test01(){ alert("js的单击事件"); } 2:双击事件--ondblclick function test02 ...

  2. deep_learning_Function_reduction_indices的用法

    在tf.reduce_sum等函数中,有一个reduction_indices参数,表示函数的处理维度. 当没有reduction_indices这个参数,此时该参数取默认值None,将把input_ ...

  3. Asp.Net MVC5 使用Unity 实现依赖注入

    到这里安装完毕会提示一个redme.txt,说  把 UnityConfig.RegisterComponents();   放到下图的位置,我们照做即可. 然后我们看一下这个 UnityConfig ...

  4. zencart设置产品始终免运费sql

    zencart网站后台-Tools(工具)-Install SQL Patches(安装SQL脚本): 运行以下相应sql语句,即可实现产品始终免运费. zencart设置所有产品始终免运费: '; ...

  5. python+Appium自动化:记录遇到的坑

    1.打开 uiautomatorviewer同步的的时候突然报错 Error while obtaining UI hierarchy XML file: com.android.ddmlib.Syn ...

  6. CSS基础学习-15.CSS3 动画效果

  7. 多线程(四)wait()、notify()以及notifyAll()

    六.线程的等待和唤醒 1.wait()和notify()的简单示范 public class Wait extends Thread{ public synchronized void run() { ...

  8. lVS/haproxy

    haproxy 安装配置   1. 下载及安装 wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.21.tar.gz tar zxvf h ...

  9. iconv命令

    iconv 用法: Usage: iconv [OPTION...] [FILE...] Convert encoding of given files from one encoding to an ...

  10. Spring Boot教程(三十六)使用MongoDB数据库(2)

    快速开始使用Spring-data-mongodb 若MongoDB的安装配置采用默认端口,那么在自动配置的情况下,我们不需要做任何参数配置,就能马上连接上本地的MongoDB.下面直接使用sprin ...