Android入门笔记之MarqueeText
来源:互联网 发布:小强软件测试 编辑:程序博客网 时间:2024/03/29 20:49
关于Marquee效果
在安卓的一个布局中,如果一个文本长度过长,并且属性被设置为singleline的时候,会出现文本显示不全的问题。这时候我们可以把这个文本设置为滚动文本,这样在应用中能完整的显示整个长文本的所有内容。
第一种实现方式
对于仅仅存在一个长文本的情况下,我们可以通过配置activity对应的layout的xml文件对长文本的滚动效果进行配置。
首先新建一个android工程,在mainactivity的布局中加入一个长文本控件,设置singleLine属性为true
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="@string/hello_world" />
此时长文本只能显示其中的一部分,剩余部分用省略号表示。为了实现该长文本的滚动效果,需要在它的配置中加入如下三项:
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"配置完成后在测试机上进行测试,可以看到长文本已经实现了滚动效果。
- 这种配置方法仅仅适用于只有一个长文本的情况,如果有两个或以上的长文本,这种配置方法只有第一个配置的长文本可以取到焦点,实现滚动效果,其他的长文本都无法滚动,如果要让所有的长文本都实现滚动效果,需要通过第二种方法。
第二种实现方式
第二种实现方式通过继承TextView类,重写其isFocused()函数来实现滚动显示效果,这种方式没有文本数量限制。
首先定义一个自定义的类,让它继承TextView类。定义构造方法,重写isFocused函数,使他返回值为true
package com.example.testmarqueetext;import android.content.Context;import android.util.AttributeSet;import android.widget.TextView;/** * @author GuiltyCrown 2016-09-24 */public class MyMarqueeText extends TextView { /** * @param context */ public MyMarqueeText(Context context) { super(context); } /** * @param context * @param attrs * @param defStyleAttr * @param defStyleRes */ public MyMarqueeText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } /** * @param context * @param attrs * @param defStyleAttr */ public MyMarqueeText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } /** * @param context * @param attrs */ public MyMarqueeText(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean isFocused() { return true; }}
布局中加入三个长文本控件
<com.example.testmarqueetext.MyMarqueeText android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:text="@string/hello_world1" /> <com.example.testmarqueetext.MyMarqueeText android:id="@+id/tv3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/tv1" android:layout_alignLeft="@+id/tv1" android:layout_marginBottom="22dp" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:singleLine="true" android:text="@string/hello_world2" /> <com.example.testmarqueetext.MyMarqueeText android:id="@+id/tv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/tv1" android:layout_below="@+id/tv1" android:layout_marginTop="27dp" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:singleLine="true" android:text="@string/hello_world3" />
测试结果如下
可以看到,三个长文本都实现了滚动效果。
- Android入门笔记之MarqueeText
- Android 入门笔记 之 网址
- Android 入门笔记 之adb
- Android入门笔记之Bar
- Android入门笔记之Gallery
- Android入门笔记之Dialog
- Android入门笔记之Activity
- Android入门笔记之AsyncTask
- Android入门笔记之Sqlite
- Android入门笔记之BroadcastReceiver
- Android入门笔记之File
- Android入门笔记之Fragment
- Android入门笔记之AutoCompleteTextView
- Android开发入门学习笔记之二
- Android开发入门学习笔记之三
- Android入门笔记之状态栏通知
- Android入门笔记之更改手机屏幕方向
- Android入门笔记之Service和Handler
- swift3新路程(13)print函数
- 【NOIP模拟】我的快乐时代
- [Android | RecyclerView] OnScrollListener() 参数说明 以及一些额外参数
- 社交类APP大全
- Windows8仍存十大疑问:安全性最关键
- Android入门笔记之MarqueeText
- SpringMVC映射器和适配器
- 【备忘】【No5】微信公众平台开发入门到实战开发视频教程(Java+PHP)
- 第25周-Photoshop-脚本编程简介
- Android 上百实例源码分析以及开源分析
- Android为CheckBox(复选框)设置可规定大小的图片
- 在html页面上嵌入JavaScript代码的几种方式
- java代码块
- MongoDB如何确保一致性