android TextView 文本内容收起,展开的效果实现

时间:2021-01-31 19:37:04

今天有个朋友问起我一个问题:文本内容点击展开,点击收起的效果,怎么实现?

  一、效果图

android TextView 文本内容收起,展开的效果实现     android TextView 文本内容收起,展开的效果实现

这效果我没做过,但我听完之后,思路确立马就有了,就跟他说了一下,最后他告诉我,方法正确。思路是这样的,在布局文件中设置两个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