通常情况下我们想实现文字的走马灯效果需要在xml文件中这样设置

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:singleLine="true"

android:ellipsize="marquee"

android:focusable="true"

android:focusableInTouchMode="true"

android:text="@string/lyric" />

大家都懂的就不解释了。

singleLine :boolean型的是否让文字只显示在一行而不是多行显示

ellipsize:滚动效果,里面有(none,start,middle,end,marquee),其中none表示正常显示文字,即使一行显示不完全,也无任何效果。star,就是假如文字在一行显示不完全,在开头显示...,同理,end一行的最后一个文字后面加...,middle就是所有文字显示在一行,如果文字太多,在中间加入...。可能我解释的不清楚,大概就是这样 读者可以自己测试一下。至于marquee就是文字走马灯效果啦。

当然,如果你只设置了这些文字还是不会滚动的。还要使TextView获取焦点。

focusable:是否能够焦点,boolean型的

focusableInTouchMode:boolean型的。

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

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

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

就像这样

这是为什么呢?

因为点击编辑框,编辑框会获取屏幕焦点,由于通常情况下屏幕的焦点只能有一个,TextView失去了焦点,也就不会滚动了。这时候我们要怎么办呢?

那就欺骗系统呗。告诉它我们的TextView也是有焦点的。没错 两个焦点。

如何做?我们就新建一个我们自己的TextView呗。

首先我们新建一个名为MyTextView继承TextView的类,重写里面的方法,其中有三个方法是必须的,就像我们总在MainActivity里面重写OnCreate方法一样,作用是什么 我也不清楚。好奇的同学请百度。哈哈~

我们要知道系统是如何判断一个控件是否获取焦点了呢?

public boolean isFocused() {

// TODO Auto-generated method stub

return super.isFocused();

}

就是这个方法。前面说了 我们要欺骗系统 我们的TextViwe是有焦点的。所以我们在这个方法里面一直return true就好了 哈哈  是不是特流氓。。。

做完了这些别忘记把我们的TextView部署到布局文件中哦

布局代码:

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:ellipsize="marquee"

android:singleLine="true"

android:text="@string/lyric" />

android:layout_width="fill_parent"

android:layout_height="wrap_content" />

MainActivity.class

package com.example.textview;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

MyTextView.class

package com.example.textview;

import android.content.Context;

import android.util.AttributeSet;

import android.view.WindowId.FocusObserver;

import android.widget.TextView;

public class MyTextView extends TextView{

public MyTextView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

// TODO Auto-generated constructor stub

}

public MyTextView(Context context, AttributeSet attrs) {

super(context, attrs);

// TODO Auto-generated constructor stub

}

public MyTextView(Context context) {

super(context);

// TODO Auto-generated constructor stub

}

@Override

public boolean isFocused() {

// TODO Auto-generated method stub

return true;

}

}

对了 附上效果图。都看到光标在编辑框了~

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

android 字体跑马灯,Android中使用TextView实现文字跑马灯效果相关推荐

  1. Android中自定义Textview解决文字和数字换行不整齐

    效果图: 上面的是原生Textview,第一行末尾数字整体换行了, 下面是自定义Textview,第一行末尾数字分别在第一行和第二行展示 布局中  MyTextview记得换成自己包名下的 <T ...

  2. android字体颜色黑色,Android中颜色选择器和改变字体颜色的实例教程

    1.构建一张七彩图: 我们经常看到这种样子的颜色选择器吧.. 然后其实右边的亮度选择是: 这样我们的代码就可以进行啦... // 创建七彩图片 private void init() { int[] ...

  3. android 字体设置方正,Android设置TextView的字体

    做项目的时候,需要使用到手写字体来让内容更加的美观.可是程序中默认使用的是系统的默认字体,怎么将TextView(或EditText)的字体设置成自己想要的字体呢?步骤如下: 下载字体文件(.ttf格 ...

  4. android 字体的切换,Android为整个应用切换第三方字体

    一. 1.通过反射来获取系统字体并替换 import java.lang.reflect.Field; import android.content.Context; import android.g ...

  5. android 字体文件压缩,Android 字体使用踩坑指南

    Android 字体使用踩坑指南 最近项目改版,根据ui的设计,需要使用到三字体.在使用过程中遇到一些坑,于是有了这个避坑指南! 字体压缩 第一个坑!字体库的体积太大. 字体压缩的前提是要使用的内容是 ...

  6. Android字体占有内存,Android 字体内存泄露

    字体需求 在App开发中,一般都会使用自定义的字体,这些字体美化App的同时,可能还会带来额外的问题,最容易带来的问题就是内存泄露,这里举个实际中遇到的问题作为例子 上面的UI,我们需要在Title. ...

  7. android 字体文件压缩,Android创建assets文件夹并使用字体图标(Icon Font)

    首先我们要知道如何在AS中新建引用assets文件 1.将项目切换到Project模式 Project.png 2.要注意assets文件夹要跟Java文件在同一目录下,都包含在main的文件下面. ...

  8. android字体斜体代码,Android设置Roboto字体用粗体,斜体,常规,…(类似于自定义字体系列)...

    我知道在Android应用程序中以编程方式设置自定义字体. 有没有办法为自定义字体(资产)加载字体,Android框架将使用基于粗体,斜体等的正确文件? 例如,现在我正在尝试将Roboto字体设置为某 ...

  9. android 字体描边实现,android文字描边功能的实现

    这里也要简单说一下,这些小模块并不是我原创,也是当时查资料找到的,由于时间比较久,原文链接已经忘记了,所以这里就不列出引用链接了.不过这些代码我都修改.完善过,也添加了一些注释,希望对大家有帮助. 文 ...

最新文章

  1. firefox4脚本执行顺序与jquery.globalEval
  2. 64位传参利用方法LibcSearcher使用入门ROPgadget利用
  3. Android第二十八天
  4. 阿里云 超级码力在线编程大赛初赛 第4场 题目3. from start to end
  5. 【Quartz.net】- Cron表达式
  6. springboot 使用restTemplate 发送https请求 忽略ssl证书
  7. 【c++leetcode】判断一个数是否是2的幂、3的幂、4的幂
  8. 幸福框架:可扩展的应用程序 “启动引导” 框架
  9. 推荐几个好用的pdf翻译工具
  10. Linux恢复数据软件,Linux数据恢复工具推荐
  11. 西方文学名著鉴赏——英文诗歌翻译赏析
  12. pat 训练题 7-5 基友团 (25分) 暴力判团和最大团
  13. MTK6577+Android之TP(触摸屏)
  14. 为什么说HHKB是程序员最好的键盘?
  15. 【基础入门题013】求连续根号的值
  16. 人工智能:免疫算法概述
  17. 网秦手机杀毒软件 v2.1 symbian s60 _symbian 7.0+ 免费
  18. 全球名校AI课程库(44)| 慕尼黑工大 · 计算机视觉深度学习进阶课『Advanced Deep Learning for Computer Vision』
  19. Android Studio 报错提示:Skipped due to earlier error
  20. Ubuntu22.04.1 LTS系统上实现KVM虚拟机显卡直通(AMD/NVIDIA+板载显卡)

热门文章

  1. RFID射频识别电子标签基础知识汇总
  2. 拥有它,XML文件少一半
  3. Couldn't read row 0, col 0 from CursorWindow. Make sure the Cursor is initia
  4. 限制input框只能输入0~100的正整数
  5. Effective C++ 条款02:尽量使用const,enum,inline替换#define
  6. 读书笔记之解忧杂货店
  7. 学java用什么软件_学java需要用到什么软件?用哪个软件比较好?
  8. 【论文解读 ESWC 2018 | R-GCN】Modeling Relational Data with Graph Convolutional Networks
  9. Java学习_Day 02(学习内容:狂神说JAVA零基础P12-P17)
  10. C语言数组初始化骚操作