Android开发自定义TextView省略号样式的方法

本文实例讲述了Android开发自定义TextView省略号样式的方法。分享给大家供大家参考,具体如下:

在布局xml中设置textView的字段 android:maxLines="2"  android:ellipsize="end"字段之后,textview会自动压缩行数,并且对压缩掉的部分用...显示。如果不想用...而想用。。。或者... ...就需要自定义这个省略号的样式,不需要自定义控件,方法如下。

首先是布局文件

<TextView android:id="@+id/textView4" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:maxLines="2" android:ellipsize="end" android:text="This is a text of TextView This is a text of TextView This is a text of TextView This is a text of TextView This is a text of TextView" android:textSize="20sp" />

对textView进行代码控制

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final TextView textView = (TextView)findViewById(R.id.textView4); Layout layout = textView.getLayout();//此时的layout为null,必须用观察者模式的回调函数来获取layout System.out.println("layout是"+layout);//此处为null ViewTreeObserver observer = textView.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { boolean isfirstRunning = true; @Override public void onGlobalLayout() {//此方法会被调用两次,每执行一次settext就会执行一次,第一次是显示全部的文本,不加省略,第二次是加上省略,将会删减两次文本 // TODO Auto-generated method stub if(isfirstRunning==false)return;//如果不加这一行的条件,出来之后是完整单词+。。。,如果加上,出来就是截断的单词+。。。 Layout layout2 = textView.getLayout(); System.out.println("layout2是"+layout2); if(textView!=null&&layout2!=null){ int lines = layout2.getLineCount(); System.out.println("当前行数是"+layout2.getLineCount()); System.out.println("被省略的字符数量是"+layout2.getEllipsisCount(lines-1));//看看最后一行被省略掉了多少 System.out.println("被省略的字符起始位置是"+layout2.getEllipsisStart(lines-1));//看看最后一行被省略的起始位置 System.out.println("最后一个可见字符的偏移是"+layout2.getLineVisibleEnd(lines-1)); //开始替换系统省略号 if(lines<2)return;//如果只有一行,就不管了 if(layout2.getEllipsisCount(lines-1)==0)return;//如果被省略的字符数量为0,就不管了 String showText = textView.getText().toString(); System.out.println("删减前"+showText); showText = showText.substring(0, layout2.getLineVisibleEnd(lines-1)-6).concat("。。。");//在此处自定义要显示的字符 System.out.println("删减后"+showText); textView.setText(showText); isfirstRunning=false; } } });

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

时间: 2024-05-13 22:12:46

Android开发自定义TextView省略号样式的方法的相关文章

Android开发中TextView 实现右上角跟随文本动态追加圆形红点_Android

在一个比较坑的需求里,一段文字右上角需要追加一个圆形红点.最右侧有个金额,红点动态随着文字移动,然后各种摆布局,一下午坑死我了.后来果断放弃.然后就想试试直接自定义view来实现这个需求. 最坑的就是效果下面的第一种情况和第二种情况,就是这两种情况给逼的   废话不说,开搞. 首先自定义个view 继承自 view 类 public class MyViewAndCircle extends View{ } 然后不用说了 ,直接飘红,必须要实现几个必要的方法了. public MyViewAnd

Android开发之简单文件管理器实现方法_Android

本文实例讲述了Android开发之简单文件管理器实现方法.分享给大家供大家参考,具体如下: 这里运用Java I/O.ListActivity.Dialog.Bitmap等实现简单文件管理器,可以查看目录文件,修改文件名,删除文件,打开文件.比较简单,直接看代码: 先看布局文件: layout/main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&q

Android开发之简单文件管理器实现方法

本文实例讲述了Android开发之简单文件管理器实现方法.分享给大家供大家参考,具体如下: 这里运用Java I/O.ListActivity.Dialog.Bitmap等实现简单文件管理器,可以查看目录文件,修改文件名,删除文件,打开文件.比较简单,直接看代码: 先看布局文件: layout/main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&q

Android编程自定义圆角半透明Dialog的方法

本文实例讲述了Android编程自定义圆角半透明Dialog的方法.分享给大家供大家参考,具体如下: 效果图如下: 只是在实例化的时候使用带样式的构造函数即可 new MyDialog(GameActivity.this, R.style.dialog); 在value文件夹中添加mydialogthemes.xml <?xml version="1.0″ encoding=" utf-8″?> <resources> <style name="

Android开发中TextView 实现右上角跟随文本动态追加圆形红点

在一个比较坑的需求里,一段文字右上角需要追加一个圆形红点.最右侧有个金额,红点动态随着文字移动,然后各种摆布局,一下午坑死我了.后来果断放弃.然后就想试试直接自定义view来实现这个需求. 最坑的就是效果下面的第一种情况和第二种情况,就是这两种情况给逼的 废话不说,开搞. 首先自定义个view 继承自 view 类 public class MyViewAndCircle extends View{ } 然后不用说了 ,直接飘红,必须要实现几个必要的方法了. public MyViewAndCi

Android编程自定义进度条颜色的方法详解

本文实例讲述了Android编程自定义进度条颜色的方法.分享给大家供大家参考,具体如下: 先看效果图: 老是提些各种需求问题,我觉得系统默认的颜色挺好的,但是Pk不过,谁叫我们不是需求人员呢,改吧! 这个没法了只能看源码了,还好下载了源码, sources\base\core\res\res\ 下应有尽有,修改进度条颜色只能找progress ,因为是改变样式,首先找styles.xml 找到xml后,进去找到: <style name="Widget.ProgressBar"&

Android开发之获取LayoutInflater对象的方法总结_Android

本文实例讲述了Android开发之获取LayoutInflater对象的方法.分享给大家供大家参考,具体如下: 在写Android程序时,有时候会编写自定义的View,使用Inflater对象来将布局文件解析成一个View.本文主要目的是总结获取LayoutInflater对象的方法. 1.若能获取context对象,可以有以下几种方法: LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYO

Android开发进阶自定义控件之滑动开关实现方法【附demo源码下载】_Android

本文实例讲述了Android开发进阶自定义控件之滑动开关实现方法.分享给大家供大家参考,具体如下: 自定义开关控件 Android自定义控件一般有三种方式 1.继承Android固有的控件,在Android原生控件的基础上,进行添加功能和逻辑. 2.继承ViewGroup,这类自定义控件是可以往自己的布局里面添加其他的子控件的. 3.继承View,这类自定义控件没有跟原生的控件有太多的相似的地方,也不需要在自己的肚子里添加其他的子控件. ToggleView自定义开关控件表征上没有跟Androi

android如何自定义TextView详解

Android控件中的TextView控件只有一个输入框,但是为了用于的操作方便我们应该实现一些功能: 1. 可以直接将内容删除的功能按钮 2. 可以记录用户以前输入的数据,同时能够将数据通过下拉显示,点击的时候实现输入 先上图: 下拉的图片没有做,所以和删除的图片使用同一个了,同志们可以直接在xml文件中更换就行了 分析: 肯定要使用自定义view来实现的,我们知道自定义view大概可以分为三类:自绘控件,组合控件,继承控件,我们这里是要进行增强的textView的功能,所以我这里使用的 是组