前几天在项目开发中,要求实现一个文字折叠显示功能:比如在TextView中如果文字量小于3行,则直接全部显示出来,如果超过3行,就在文字下方增加一个点击展开的箭头,点击则展开文字,文字展开后展开箭头变成收缩箭头,点击就收缩起来。最开始是考虑自己通过TextView+ImageButon两个控件来实现的,后来在网上一查,有直接的开源控件,果断拿来用了。做了简单地修改(主要是修改了展开图标),就顺利完成了功能。
展开后的效果:
收缩后的效果:
开源控件ExpandableTextView的代码地址:https://github.com/com314159/ExpandableTextViewInListView,这个也可以用在ListView的每一个Item中,我在项目中就是用于ListViw中的。使用起来很简单:
1,布局中添加控件(对应添加TextView和ImageButton):
<com.huika.ncfinancing.views.ExpandableTextView
android:id="@+id/expand_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
expandableTextView:maxCollapsedLines="3" >//设置默认显示的行数
<TextView
android:id="@+id/expandable_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:textColor="#333333"
android:textSize="15sp" />
<ImageButton
android:id="@id/expand_collapse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:background="@android:color/transparent"
android:visibility="invisible" />
</com.huika.ncfinancing.views.ExpandableTextView>
在代码中就更简单了:
private ExpandableTextView expandTextView;
....
expandTextView = (ExpandableTextView) convertView.findViewById(R.id.expand_text_view);
expandTextView.setText(“设置你要显示的数据”);
------------------------------ok啦!