<TextView>实现一个有趣的小效果
2017-02-27 22:47
309 查看
一、新建一个Project。
二、添加两个TextView,并设置它的属性。
<TextView android:id="@+id/tv_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="疯狂源自梦想,技术成就辉煌,好好学习,天天向上!!!" android:textSize="24dp" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:textColor="#b1704a" /> <TextView android:layout_below="@+id/tv_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:text="疯狂源自梦想,技术成就辉煌,好好学习,天天向上!!!" android:textSize="64dp" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:textColor="#ff0000" />
android:singleLine=”true”
设置单行显示。
如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。
android:ellipsize=”marquee”
.设置可滚动,或显示样式
android:focusable=”true”:设置TextView自动获得焦点
android:focusableInTouchMode=”true”:通过触摸获得焦点
这些属性设置完毕之后,运行一下,你会发现第一个TextView会有跑马灯效果,第二没有,这是因为程序一运行,先是第一个TextView或的焦点,一直没有丢失,所以第二个TextView才获取不到。也就没有效果。
如果需要两个TextView都能完美运行,自定义TextView,这时我们需要新建一个类来继承TextView。实现它的三个构造方法。并覆盖isFocused()方法,返回值设置为true,这样就强制性要求了这自定义TextView子类都获得焦点。
public class MarqueeText extends TextView{ public MarqueeText(Context context) { super(context); } public MarqueeText(Context context, AttributeSet attrs) { super(context, attrs); } public MarqueeText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean isFocused() { return true; } }
然后我们在把TextView换成我们自定义的TextView,就OK了。
<com.zp.administrator.marqueetextviewdemo.MarqueeText android:id="@+id/tv_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="疯狂源自梦想,技术成就辉煌,好好学习,天天向上!!!" android:textSize="24dp" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:textColor="#b1704a" /> <com.zp.administrator.marqueetextviewdemo.MarqueeText android:layout_below="@+id/tv_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:text="疯狂源自梦想,技术成就辉煌,好好学习,天天向上!!!" android:textSize="64dp" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:textColor="#ff0000" />
接着再运行就可以看到两个效果都实现了。
ps:今天是自己第一次写技术博客,虽然这只是开始的一小步,却是我作为程序员的一大进步。O(∩_∩)O~
相关文章推荐
- Android UI设计之<四>自定义TextView属性,实现带边框效果的TextView
- 基于TextView实现的SemiCircleRectView<热门标签>
- Android实战简易教程<三十二>(自定义View登录注册界面EditText-实现一键清空)
- (转)LinearLayout中实现水平方向上的两个Textview一个居左,一个居右的效果
- Android UI设计之<十四>自定义ViewGroup,实现绚丽的仿支付宝咻一咻雷达脉冲效果
- FreeMarker编写一个用于实现<select/>效果的通用指令
- Android实战简易教程<三十三>(自定义View实现控件晃动提示效果)
- Android实战简易教程<二十六>(基于ViewPager实现微信页面切换效果)
- Android_用SpannableString实现在同一个TextView中多风格的文字效果
- android中一个TextView实现其中内容大小颜色不同的效果
- Android实战简易教程<十二>(ViewFlipper实现幻灯效果)
- <五>RecycleView+CardView实现瀑布流(类in界面效果)
- LinearLayout中实现水平方向上的两个textview一个居左,一个居右的效果
- 利用<div>层 和<img>标签,实现一个图片两个动画效果
- text-decoration <del> <s> 实现横线从文字中间穿过的CSS效果属性和html标签
- Android UI设计之<六>使用HTML标签,实现在TextView中对部分文字进行加粗显示
- 一个textview实现文字在图片上面的效果
- Android UI设计之<一>使用ImageView实现ProgressBar旋转效果
- 写一个MyList<T>的类,内部用T[]实现(不能使用系统的List<T>类),需要实现的接口如下:
- 网站上有一个mp3文件,但是用<a href="my.mp3">下载</a>时,会在播放器里打开,请问我要怎样才能实现点击后下载呢?