Android TextView 倒数第几位开始省略

图片说明

求实现这种 内容长度超过后省略 ,但要保留后面的单位,怎么实现啊
我现在只能实现这样的
图片说明

那你换个方法比如写两个TextView不就可以解决了?

同意楼上写两个TextView 第一个行数限制第二个用来放单位,如果网络请求的数据可以用split方法以(为标志进行字符串切割然后分别setText

的确,两个textview可以轻松解决

不行啊 左边的textview 内容太长后会把右边的textview 挤没有的
图片说明
图片说明

图片说明

SubString直接去掉尾巴,然后再直接+一个单位上去不就好了吗

+一个单位 长了后出现省略号就没有单位了

android:ellipsize="middle" 一般来说单位不会太长,用中间省略足够了 1111……1111

如上所说用2个TextView是可以实现的, 不过前提是限制1行显示. 如图效果,不过这**在代码中要设置左边textview的最大宽度为父容器的宽度减去右边textview的宽度**

  <RelativeLayout
                android:id="@+id/rl"
                android:layout_width="match_parent"
                android:layout_height="50dp">

                <TextView
                    android:id="@+id/tv3"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:textSize="17sp"
                    android:ellipsize="end"
                    android:lines="1"
                    android:text="开发贷款时"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_toRightOf="@id/tv3"
                    android:text="(kg)"/>
            </RelativeLayout>

     //给第一个TextView设置maxWidth留出地2个textview的位置以防右边的textview被挤到看不见                    
     tv3.setMaxWidth(this.getWindowManager().getDefaultDisplay().getWidth()- AndroidUtil.dpToPx(25,this));
     tv3.setText("看水电费拉克丝发酸辣粉但是浪费粮食拉克丝法律手段索拉卡冯老师");

图片说明

写2个textView后面的定宽高,前面的限字数,超字数就打点就行了啊,怎么搞的这么复杂

![图片说明](https://img-ask.csdn.net/upload/201706/24/1498288061_160121.png)图片说明

直接看效果吧

两个TextView在一个linearlayout固定宽中(做dimnes适配) 里面用权重控制第一个textview的长宽。试试

首先没遇到过这样的需求,如果上面所有人提供的方法都不行的话,可以尝试富文本,把后面的(kg)当做一个图片添加在后面。

直接截取也很简单啊,
String str = new String("23123(a)");
if(str.length()> 你规定的长度){
String str1 = str.substring(0,str.indexOf('(')-1);
String str2 = str.substring(str.indexOf('('));
str = str1 +"..."+str2;
}
这样不就行了么?

直接截取也很简单啊,
String str = new String("23123(a)");
if(str.length()> 你规定的长度){
String str1 = str.substring(0,str.indexOf('(')-1);
String str2 = str.substring(str.indexOf('('));
str = str1 +"..."+str2;
}
这样不就行了么?

单行显示,限制字数

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxEms="20"
android:ellipsize="end"
android:singleLine="true"
/>

```多行限制字数

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
/>

希望对你有帮助