android使用Textview实现伸缩效果
程序员文章站
2023-11-06 22:45:52
android开发过程中,经常遇到textview展示不完全的情况。
遇到此情况,通常的处理是:
方案一、textview添加android:ellipsize...
android开发过程中,经常遇到textview展示不完全的情况。
遇到此情况,通常的处理是:
方案一、textview添加android:ellipsize属性,让展示不完的部分使用省略号代替。
方案二、textview采用走马灯效果,使其滚动展示全部文本内容。
对于方案一,如果想查看被省略后的内容,如何实现?微信的评论列表,豌豆荚视频详情介绍都有类似使用场景。
下面来看下demo例子的收起效果,文本内容没有展示完全,使用省略号代替,提示“更多”和向下箭头标识,截图如下:
当点击“更多”和向下箭头时,被省略的内容全部展示出来,提示“更多”和向上收起标识箭头,截图如下:
对于以上效果,实现思路如下:
1、设置textview默认展示固定行,比如3行,内容展示不完全,在textview尾部使用省略号代替。
xml文件内容为:
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context=".mainactivity" > <!-- 显示文本 --> <textview android:id="@+id/text_content" android:layout_width="fill_parent" android:layout_height="wrap_content" android:ellipsize="end" android:maxlines="3" android:singleline="false" /> <!-- 更多和箭头 --> <relativelayout android:id="@+id/show_more" android:layout_below="@id/text_content" android:layout_alignparentright="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margintop="3dip" > <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentright="true" android:textsize="13sp" android:textcolor="#999" android:layout_marginright="34dip" android:text="更多" /> <imageview android:id="@+id/spread" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentright="true" android:background="@drawable/ic_details_more" /> <imageview android:id="@+id/shrink_up" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentright="true" android:background="@drawable/ic_shrink_up" android:visibility="gone" /> </relativelayout> </relativelayout>
2、点击“更多”和向下箭头时,通过textview的setmaxlines()方法改变textview的最大行数。即可实现上述效果。
java代码为:
package com.example.testdemo; import android.app.activity; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.imageview; import android.widget.relativelayout; import android.widget.textview; public class mainactivity extends activity implements onclicklistener { private static final int video_content_desc_max_line = 3;// 默认展示最大行数3行 private static final int show_content_none_state = 0;// 扩充 private static final int shrink_up_state = 1;// 收起状态 private static final int spread_state = 2;// 展开状态 private static int mstate = shrink_up_state;//默认收起状态 private textview mcontenttext;// 展示文本内容 private relativelayout mshowmore;// 展示更多 private imageview mimagespread;// 展开 private imageview mimageshrinkup;// 收起 @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); initview(); initdata(); } private void initview() { mcontenttext = (textview) findviewbyid(r.id.text_content); mshowmore = (relativelayout) findviewbyid(r.id.show_more); mimagespread = (imageview) findviewbyid(r.id.spread); mimageshrinkup = (imageview) findviewbyid(r.id.shrink_up); mshowmore.setonclicklistener(this); } private void initdata() { mcontenttext.settext(r.string.txt_info); } @override public void onclick(view v) { // todo auto-generated method stub switch (v.getid()) { case r.id.show_more: { if (mstate == spread_state) { mcontenttext.setmaxlines(video_content_desc_max_line); mcontenttext.requestlayout(); mimageshrinkup.setvisibility(view.gone); mimagespread.setvisibility(view.visible); mstate = shrink_up_state; } else if (mstate == shrink_up_state) { mcontenttext.setmaxlines(integer.max_value); mcontenttext.requestlayout(); mimageshrinkup.setvisibility(view.visible); mimagespread.setvisibility(view.gone); mstate = spread_state; } break; } default: { break; } } } }
下面为demo示例下载链接,textview伸缩
textview的伸缩就探讨到这里,有问题,大家可以留言。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Mybatis面试题吐血总结
下一篇: 了解一下Java SPI的原理