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. Linux用户影子文件——shadow

    Linux使用不可逆的加密算法(如MD5,SHA1等)来加密口令.和/etc/passwd类似,/etc/shadow文件中每条记录用冒号“:”分隔,形成9个域,格式如下所示: username:pa ...

  2. vue项目 WebViewJavascriptBridge 适配android和ios

    前言 最近在app 原生页面 嵌套 做Vue 的H5,混合开发,当然原生和Vue 交互方面当然用到 WebViewJavascriptBridge 这个东西啦, 当然在用到的时候也有问题,可以参考大佬 ...

  3. tqdm模块

    tqdm 是 Python 进度条库. tqdm库下面有2个类我们经常使用: 1. 2. 可以在 Python 长循环中添加一个进度提示信息用法:tqdm(iterator) trange(i) 是 ...

  4. 【vs2015发布程序】

    1.选中网站右键,选择发布Web应用 2.发布目标选择自定义 3.配置文件名称 4.发布方式选择File System,选择发布的程序存放路径 5.

  5. uoj30【CF Round #278】Tourists(圆方树+树链剖分+可删除堆)

    - 学习了一波圆方树 学习了一波点分治 学习了一波可删除堆(巧用 ? STL) 传送门: Icefox_zhx 注意看代码看怎么构建圆方树的. tips:tips:tips:圆方树内存记得开两倍 CO ...

  6. Win7安装VS2019

    SP1 补丁 WIN7安装VS2019需要更新两个补丁才能顺利安装,否则会闪退. KB4474419 KB4490628 https://zhidao.baidu.com/question/18026 ...

  7. logback导入依赖 NoSuchMethodException

    1.我遇到的问题是Spring版本和logback低版本冲突的问题 如何解决:把logback.classic和logback.core等依赖换成1.2.2以上版本的依赖

  8. laravel博客中文章删除遇到问题

    SQLSTATE[42S22]: Column not found: 1054 Unknown column 'blog_article.id' in 'where clause' (SQL: sel ...

  9. 一、Django入门

    1.安装: 下载地址:https://www.djangoproject.com/download/ 原文节选: How to get Django Django is available open- ...

  10. axios的post传参时,将参数转为form表单格式

    import axios from 'axios'; import alert from './alert.js'; import Qs from 'qs' //引入qs 时axios的自带模块 le ...