zoukankan      html  css  js  c++  java
  • Android TextView内容过长加省略号,点击显示全部内容

    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。
    文字展开和收缩

    [java] view plain copy
     
    1. public class DemoActivity extends BaseActivity {   
    2. @Override   
    3.       protected void onCreate(Bundle savedInstanceState) {    
    4.            super.onCreate(savedInstanceState);    
    5.            setContentView(R.layout.main);      
    6.            // 在xml文件中设置了android:singleline="true"   
    7.            final TextView tv = (TextView)findViewById(R.id.task_2_title);   
    8.            //tv.setMovementMethod(ScrollingMovementMethod.getInstance());   
    9.            tv.setOnClickListener(new OnClickListener() {      
    10.                  Boolean flag = true;     
    11.                  @Override     
    12.                  public void onClick(View v) {      
    13.                         Log.i("tv.getLineCount()",tv.getHeight()+"");      
    14.                         if(flag){           
    15.                               flag = false;       
    16.                               tv.setEllipsize(null); // 展开       
    17.                               //tv.setSingleLine(flag);      
    18.                         }else{       
    19.                               flag = true;       
    20.                               tv.setEllipsize(TextUtils.TruncateAt.END); // 收缩       
    21.                               //tv.setSingleLine(flag);      
    22.                         }     
    23.                  }    
    24.           });   
    25.      }  
    26. }  


    其实,只是把样式清空而已。就能完全展开了。有人可能要说,万一我想初始几行呢?放心,一样可以。上代码:在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”这个固定值

  • 相关阅读:
    Unity3d资源管理分析
    Unity3D之MonoBehaviour的可重写函数整理
    Unity3D脚本学习——运行时类
    A*寻路初探(转载)
    360sdk网游支付服务
    总结使用Unity 3D优化游戏运行性能的经验
    Unity3D之Lightmap详解
    「luogu2714」四元组统计
    「BZOJ1066」[SCOI2007]蜥蜴
    「luogu1251」餐巾计划问题
  • 原文地址:https://www.cnblogs.com/simadi/p/6845415.html
Copyright © 2011-2022 走看看