今天有个朋友问起我一个问题:文本内容点击展开,点击收起的效果,怎么实现?
一、效果图
这效果我没做过,但我听完之后,思路确立马就有了,就跟他说了一下,最后他告诉我,方法正确。思路是这样的,在布局文件中设置两个TextView,两个TextView设置相同的内容,一个设置visible,限制行数,另一个设置gone,全部显示,然后在点击展开的时候,把限制了行数的TextView设置gone,把全部显示的visible出来,反之亦然。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#F8F8FF" android:orientation="vertical"> <TextView android:id="@+id/main_tv_hidden" android:layout_width="match_parent" android:layout_height="wrap_content" android:lineSpacingMultiplier="1.2" android:padding="10dp" android:text="黄重谚在12日记者会上表示,经评估后,有四点不同意理由,包括:马英九卸任不到一个月,仍有保密必要;马英九任内接触机密档案资料尚需更多时间清查确认;香港为高度敏感地区,*地区前*访港的风险难以管控;*安全部门与香港尚无合作先例。" android:lines="3" /> <TextView android:id="@+id/main_tv_show" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#F8F8FF" android:lineSpacingMultiplier="1.2" android:padding="10dp" android:visibility="gone" android:text="黄重谚在12日记者会上表示,经评估后,有四点不同意理由,包括:马英九卸任不到一个月,仍有保密必要;马英九任内接触机密档案资料尚需更多时间清查确认;香港为高度敏感地区,*地区前*访港的风险难以管控;*安全部门与香港尚无合作先例。" /> <TextView android:id="@+id/main_tv_click" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="展开" android:paddingLeft="10dp" android:textColor="#009ACD" android:onClick="onClick" /> </LinearLayout>
public void onClick(View v){ if(tvDescHidden.getVisibility()==View.VISIBLE){ tvDescHidden.setVisibility(View.GONE); tvDescShow.setVisibility(View.VISIBLE); tvClick.setText("收起"); }else{ tvDescHidden.setVisibility(View.VISIBLE); tvDescShow.setVisibility(View.GONE); tvClick.setText("展开"); } }最后附上 demo