Android设置TextView显示一行或多行

来源:互联网 发布:雀巢中国总部 知乎 编辑:程序博客网 时间:2024/06/02 03:26

在listView的item中或者是特殊的业务需求中,会要求TextView的内容不完全显示,只有通过一个指定的操作后才显示所有的,比如说一个按钮或者是其它的什么控件。

要想实现这个效果并不难,只要控制好TextView的行数就行。文章中介绍了两种实现方法,一种是给button添加Flag,另一种是给button添加Tag,两种方法都可以,具体说不上哪种更好,哪种适合用哪种。

第一种方法的布局,注意TextView中必须加上android:ellipsize和android:maxLines这两条属性,不然的话效果出不来:

<span style="font-size:14px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <TextView        android:id="@+id/text1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" />    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@id/text1"        android:layout_marginTop="10dp" >        <TextView            android:id="@+id/text2"            android:layout_width="200dp"            android:layout_height="wrap_content"            android:ellipsize="end"            android:maxLines="2"            android:text="四谛法邝健廉四谛法邝健廉四谛法邝健廉四谛法邝健廉四谛法邝健廉四谛法邝健廉四谛法邝健廉四谛法邝健廉四谛法邝健廉四谛法邝健廉四谛法邝健廉四谛法邝健廉" />        <Button            android:id="@+id/button"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentRight="true"            android:layout_marginTop="10dp"            android:text="下拉" />    </RelativeLayout></RelativeLayout></span>
接下来就可以在类中控制这个TextView显示或者隐藏了。

<span style="font-size:14px;">button.setOnClickListener(new OnClickListener() {Boolean flag = true;@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubif (flag) {flag = false;text.setEllipsize(null);// 展开text.setSingleLine(flag);button.setText("隐藏");} else {flag = true;text.setMaxLines(2);// 收缩button.setText("显示");// text.setEllipsize(TruncateAt.END);}}});</span>

或者可以在Button中添加一个Tag

<span style="font-size:14px;"><Button            android:id="@+id/item_button"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentRight="true"            android:layout_centerVertical="true"            android:layout_marginRight="10dp"            android:background="@drawable/packup"            android:tag="true" /></span>


同样,在代码中获取到改按钮的tag进行控制

<span style="font-size:14px;">viewItme.item_btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubBoolean flag = Boolean.valueOf((String) viewItme.item_btn.getTag()) ;if (flag) {// 展开viewItme.item_btn.setTag("false");viewItme.inspecttext_tv.setEllipsize(null);viewItme.inspecttype_tv.setEllipsize(null);viewItme.item_describe.setEllipsize(null);viewItme.item_describe.setMaxLines(10);viewItme.item_btn.setBackgroundResource(R.drawable.unfloddd);} else {// 收缩viewItme.item_btn.setTag("true");viewItme.item_describe.setMaxLines(1);viewItme.item_btn.setBackgroundResource(R.drawable.packup);}}});</span>



2 0