现在的位置: 首页 > 综合 > 正文

TextView折叠

2016年08月21日 ⁄ 综合 ⁄ 共 2199字 ⁄ 字号 评论关闭

在Android TextView中有个内容过长加省略号的属性,即ellipsize,

Causes words in the text that are longer than the view is wide to be
ellipsized instead of broken in the middle. You may also want to
setSingleLine() or setHorizontallyScrolling(boolean) to constrain the
text to a single line. Use null to turn off ellipsizing. If
setMaxLines(int) has been used to set two or more lines, END and
MARQUEE* are only supported (other ellipsizing types will not do
anything).

在xml中:
android:ellipsize="start"   省略号在开头
android:ellipsize="middle"    省略号在中间
android:ellipsize="end"     省略号在结尾
android:ellipsize="marquee"   跑马灯
android:ellipsize="none"      无省略号

最好加一个TextView显示行数的约束,例如:
android:singleline="true"或者android:lines="2"

在java文件中:
tv.setEllipsize(TextUtils.TruncateAt.START);
tv.setEllipsize(TextUtils.TruncateAt.MIDDLE);
tv.setEllipsize(TextUtils.TruncateAt.END);
tv.setEllipsize(TextUtils.TruncateAt.MARQUEE);
tv.setEllipsize(null);

最好加一个TextView显示行数的约束,例如:
tv.setSingleLine(true);

不仅对于textview有此属性,对于EditText也有,不过它不支持marquee。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/tv_desc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:lines="4"
        android:text="锤子科技是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

公司的英文名“Smartisan”,是由“smart”和“artisan”组合成的词,意思是“智能手机时代的工匠”。

在缺乏创新精神和创新能力的安卓手机阵营里,锤子科技的团队格外擅长软件的图形界面和用户体验设计,并精通硬件的工业设计。

锤子科技成立于2012年5月。" />

</FrameLayout>
package com.leigo.foldingtextview;

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener{
	
	private TextView mTvDesc;
	private boolean flag;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		mTvDesc = (TextView) findViewById(R.id.tv_desc);
		mTvDesc.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.tv_desc:
			if(!flag) {
				flag = true;
				mTvDesc.setEllipsize(null);  //展开
				mTvDesc.setSingleLine(false);
			}else {
				flag = false;
				mTvDesc.setEllipsize(TextUtils.TruncateAt.END);  //收缩
				mTvDesc.setLines(4);
			}
			break;

		default:
			break;
		}
	}

}

截图

抱歉!评论已关闭.