TextView不用获取焦点也能实现跑马灯

1.写一个类继承TextView

[java] view plaincopy

  1. package com.example.tt;
  2. import android.content.Context;
  3. import android.graphics.Rect;
  4. import android.util.AttributeSet;
  5. import android.widget.TextView;
  6. public class ScrollingTextView extends TextView {
  7. public ScrollingTextView(Context context, AttributeSet attrs, int defStyle) {
  8. super(context, attrs, defStyle);
  9. }
  10. public ScrollingTextView(Context context, AttributeSet attrs) {
  11. super(context, attrs);
  12. }
  13. public ScrollingTextView(Context context) {
  14. super(context);
  15. }
  16. @Override
  17. protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
  18. if(focused)
  19. super.onFocusChanged(focused, direction, previouslyFocusedRect);
  20. }
  21. @Override
  22. public void onWindowFocusChanged(boolean focused) {
  23. if(focused)
  24. super.onWindowFocusChanged(focused);
  25. }
  26. @Override
  27. public boolean isFocused() {
  28. return true;
  29. }
  30. }

2.xml 中增加属性

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <com.example.tt.ScrollingTextView
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:layout_marginLeft="80dip"
  11. android:layout_marginBottom="25dip"
  12. android:textSize="25sp"
  13. android:singleLine="true"
  14. android:textColor="@android:color/black"
  15. android:ellipsize="marquee"
  16. android:focusable="true"
  17. android:marqueeRepeatLimit="marquee_forever"
  18. android:focusableInTouchMode="true"
  19. android:scrollHorizontally="true"
  20. android:text="这才是真正的文字跑马灯效果,文字移动速度,文字移动方向,文字移动的样式,动画等等……"
  21. android:background="#2FFFFFFF" />
  22. <Button
  23. android:id="@+id/button1"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:text="Button" />
  27. </LinearLayout>

3. 在activity中声明

[java] view plaincopy

    1. package com.example.tt;
    2. import android.os.Bundle;
    3. import android.app.Activity;
    4. import android.view.Menu;
    5. public class MainActivity extends Activity {
    6. @Override
    7. public void onCreate(Bundle savedInstanceState) {
    8. super.onCreate(savedInstanceState);
    9. setContentView(R.layout.activity_main);
    10. }
    11. }

TextView不用获取焦点也能实现跑马灯

时间: 2024-07-29 00:09:58

TextView不用获取焦点也能实现跑马灯的相关文章

自定义TextView跑马灯

本篇主要介绍TextView的可控制跑马灯效果实现. Android自带的TextView添加几个属性就可以实现跑马灯效果,大概是这样 android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" 就实现了TextView获取焦点时出现跑马灯效果. 本篇要实现的是一种不用获取焦点并且可以控制跑马灯开始和结束的方法. 1.主要利用vo

Android之如何用TextView实现滚动字幕的效果【跑马灯】

TextView 实现滚动字幕效果[跑马灯效果]: android:ellipsize="marquee"//可滚动,star(头部),middle(中部),end(尾部) 超出显示不下的内容用...代替, 实现条件 1.必须设置为单行显示,且TextView中的内容超过它的容纳范围, 2.TextView本身没有焦点,必须设置成可获取焦点 <TextView android:layout_width="100dp" android:layout_height

TextView实现跑马灯效果

使用setSelect(true)来实现, 当然Textview 获得焦点后也会跑马灯 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height=&

Android:TextView文字跑马灯的效果实现

解决TextView文字显示不全的问题. 简单设置跑马灯的效果: <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="marquee" android:focusable="true" androi

Android跑马灯的实现及问题总结

所谓跑马灯效果就是当文字超过控件所能容纳的空间时,在控件内滚动的效果. 显示跑马灯效果的前提条件就是你的文本内容要比显示文本的外部组件长,即外部组件无法完整的显示内部的文本内容. TextView设置以下属性来实现跑马灯效果: android:singleLine="true" android:ellipsize="marquee" android:focusableInTouchMode="true" android:focusable=&qu

继承TextView获取焦点实现跑马灯

1 public class MarqueeFocuseTextView extends TextView { 2 3 public MarqueeFocuseTextView(Context context, AttributeSet attrs, 4 int defStyle) { 5 super(context, attrs, defStyle); 6 } 7 8 public MarqueeFocuseTextView(Context context, AttributeSet attr

ListView 中的TextView实现跑马灯效果

案例:怎么样在一个ListView中含有TextView的item中实现字母滚动呢.这个在一些特定的场合经常用得到.如下图,当焦点位于某个item的时候其内容就自动滚动显示 要实现这样的效果,废话不多说直接上代码: adapter对应的layout 对应的listView的layout 切记千万不要在TextView中加上android:focusable="true" view plain <LinearLayout android:orientation="vert

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

Android TextView 中当文字比较多时希望它横向滚动显示,下面是一种亲测可行的方法. 效果图: 1.自定义TextView,重写isFocused()方法返回true,让自定义TextView一直处于获取焦点状态. package com.example.shen.marqueedemo; import android.content.Context; import android.util.AttributeSet; import android.widget.TextView;

Android成长日记-仿跑马灯的TextView

在程序设计中有时候一行需要显示多个文字,这时候在Android中默认为分为两行显示,但是对于必须用一行显示的文字需要如何使用呢? --------------------------------------------------------------------- 以下列出解决方法: 1. 新建TextView控件 <TextView android:id="@+id/textView" android:layout_width="wrap_content"