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的伸缩就探讨到这里,有问题,大家可以留言。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的android使用Textview实现伸缩效果全部内容,希望文章能够帮你解决android使用Textview实现伸缩效果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)