Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1、android:ellipsize=”marquee” 2、TextView必须单行显示,即内容必须超出TextView大小 3、TextView要获得焦点才能滚动 XML代码: android:ellipsize="marquee", android:singleLine="true" Java代码: mTVText.setText("哼唱接撒砥砺风节雷锋精神http://orgcent.com/,很长很长很长很长很长很长的数据"); mTVText.setSingleLine(true); mTVText.setEllipsize(TruncateAt.MARQUEE); PS: TextView.setHorizontallyScrolling(true); //让文字可以水平滑动 TextView还可以设置跑马灯效果的滚动次数,如下: XML代码设置: android:marqueerepeatlimit="1"。1代表1次,-1代表无限循环。 Java代码设置: mTVText.setMarqueeRepeatLimit(-1);
_____________________

在Android TextView中有个内容过长加省略号的属性,即ellipsize,用法如下:

在xml中:
android:ellipsize="end"     省略号在结尾
android:ellipsize="start"   省略号在开头
android:ellipsize="middle"   省略号在中间
android:ellipsize="marquee"  跑马灯
最好加一个TextView显示行数的约束,例如:android:singleline="true"或者android:lines="2"

在java文件中:
tv.setEllipsize(TextUtils.TruncateAt.valueOf("END"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("START"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MIDDLE"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MARQUEE"));
最好加一个TextView显示行数的约束,例如:tv.setSingleLine(true);
不仅对于textview有此属性,对于editext也有,不过它不支持marquee。
文字展开和收缩
public class DemoActivity extends BaseActivity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);    // 在xml文件中设置了android:singleline="true"
  final TextView tv = (TextView)findViewById(R.id.task_2_title);
  //tv.setMovementMethod(ScrollingMovementMethod.getInstance());
  tv.setOnClickListener(new OnClickListener() {
    Boolean flag = true;
   @Override
   public void onClick(View v) {
    Log.i("tv.getLineCount()",tv.getHeight()+"");
    if(flag){
    
     flag = false;
     tv.setEllipsize(null); // 展开
     //tv.setSingleLine(flag);
    }else{
     flag = true;
     tv.setEllipsize(TextUtils.TruncateAt.END); // 收缩
     //tv.setSingleLine(flag);
    }
   }
  });
 }
}其实,只是把样式清空而已。就能完全展开了。有人可能要说,万一我想初始几行呢?放心,一样可以。上代码:在xml文件中设置了如下属性:android:lines="4"      //我初始化的4行  Activity那边代码一样,只改一点 if(flag){
        flag = false;
         tv.setEllipsize(null); // 展开
         tv.setSingleLine(flag);
        }else{
          flag = true;
          tv.setEllipsize(TextUtils.TruncateAt.END); // 收缩
    }

 设置setSingleLine的目的是为了取消lines==“4”这个固定值


更多相关文章

  1. textview中加链接
  2. 【Android布局】在程序中设置android:gravity 和 android:layout
  3. textview中加链接
  4. android 中的 openGL引擎的移植
  5. 利用html5开发android(转载)
  6. textview中加链接
  7. Binder驱动的实现
  8. 图片缩放设置
  9. Button 按钮的几个属性

随机推荐

  1. 玩转 Linux,掌握这些 Linux 命令就够了!
  2. 对 Linux 新手非常有用的 20 个命令
  3. 看看函数库
  4. 普通人打工,用创业心态干好8小时工作
  5. PHP基础:COOKIE/SESSION和命名空间
  6. 大牛干货,MySQL命令1000行整理,收藏学习
  7. 必须掌握的30种SQL语句优化
  8. 用心整理,1000行MySQL命令,很实用,建议收藏
  9. json数据类型,安装MySQL
  10. 用户登录及注销