TextView实现文本的收起与展示
来源:互联网 发布:网络女神雅典娜是谁 编辑:程序博客网 时间:2024/06/05 16:14
这个功能我是借用的别人的代码,写在这里只是为了记录,方便以后的使用。
先上代码,在values目录下新建一个attrs.xml,放入代码:
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="ExpandTextView"> <attr name="showLines" format="integer"/> </declare-styleable></resources>
然后新建一个类:
import android.content.Context;import android.content.res.TypedArray;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.widget.LinearLayout;import android.widget.TextView;import demo.yang.com.baisi.R;/** * 有全文和收起的TextView */public class ExpandTextView extends LinearLayout { public static final int DEFAULT_MAX_LINES = 3; private TextView contentText; private TextView textPlus; private OnExpandTextViewClicklistener onExpandTextViewClicklistener; private int showLines; public ExpandTextView(Context context) { super(context); initView(); } public ExpandTextView(Context context, AttributeSet attrs) { super(context, attrs); initAttrs(attrs); initView(); } public ExpandTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initAttrs(attrs); initView(); } private void initView() { setOrientation(LinearLayout.VERTICAL); LayoutInflater.from(getContext()).inflate(R.layout.layout_magic_text, this); contentText = (TextView) findViewById(R.id.contentText); if(showLines > 0){// contentText.setMaxLines(showLines);//设定显示行数 contentText.setMaxLines(showLines); } contentText.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { onExpandTextViewClicklistener.onExpandTextViewClick(); } }); textPlus = (TextView) findViewById(R.id.textPlus);//扩展点击事件 textPlus.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { String textStr = textPlus.getText().toString().trim(); if("全文".equals(textStr)){ contentText.setMaxLines(Integer.MAX_VALUE); textPlus.setText("收起"); }else{ contentText.setMaxLines(showLines); textPlus.setText("全文"); } } }); } private void initAttrs(AttributeSet attrs) { TypedArray typedArray = getContext().getTheme().obtainStyledAttributes(attrs, R.styleable.ExpandTextView, 0, 0);//属性 try { showLines = typedArray.getInt(R.styleable.ExpandTextView_showLines, DEFAULT_MAX_LINES);//显示属性行数 }finally { typedArray.recycle(); } } public void setText(final CharSequence content){ contentText.post(new Runnable() { @Override public void run() { contentText.setText(content); int linCount = contentText.getLineCount(); if(linCount > showLines){ contentText.setMaxLines(showLines); textPlus.setVisibility(View.VISIBLE); textPlus.setText("全文"); }else{ textPlus.setVisibility(View.GONE); } } }); } public OnExpandTextViewClicklistener getOnExpandTextViewClicklistener() { return onExpandTextViewClicklistener; } public void setOnExpandTextViewClicklistener(OnExpandTextViewClicklistener onExpandTextViewClicklistener) { this.onExpandTextViewClicklistener = onExpandTextViewClicklistener; } public interface OnExpandTextViewClicklistener{ public void onExpandTextViewClick(); }}这个类可以直接放在工具类文件夹里面,可以直接在布局文件中使用了,如果你有特殊的需要可以再添加对应的内容,这里面还需要一个布局代码
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/contentText" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#232323" android:lineSpacingExtra="5dp" android:textSize="17sp" android:text="" /> <TextView android:id="@+id/textPlus" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="17sp" android:textColor="#8290AF" android:paddingBottom="5dp" android:text="" /></LinearLayout>
上面的TextView是用来显示文本内容,下面的TextView用来显示“收起”和“全文”。
然后在布局文件里面调用的方法如下
<demo.yang.com.demo.Utils.ExpandTextView android:id="@+id/essence_content" android:paddingLeft="15dp" android:paddingRight="15dp" app:showLines="7" android:layout_width="match_parent" android:layout_height="wrap_content" />showLines就是设置的最多显示几行,超过了这个值,就收起。
最后还是给一张效果图吧,不要在意内容。。。用的别人家的接口
0 0
- TextView实现文本的收起与展示
- android TextView 文本内容收起,展开的效果实现
- 标签内容的详细展示与收起
- Textview文字的收起与展开功能
- 原生TextView实现富文本展示
- TextView展示指定的文本内容
- TextView实现扩展和收起
- 动态设置TextView的高度,就是点击收起和展示更多的效果
- Android中TextView实现富文本展示效果
- 文章收起与展开效果的实现
- 实现文章的展开与收起
- TextView等类似控件的富文本展示
- 自定义view实现TextView展开收起效果
- Reclyclerview 的条目的textview展开,收起
- 一种可以展开收起的TextView
- TextView 显示收起 展开的bug
- 自定义可展开收起TextView,展开收起按钮紧跟文本内容
- 实现TextView文本的上下滚动
- css外边距
- Sublime Text 3使用教程
- #include<stack> 南阳oj括号匹配
- xmlhttp.responsetext 获取servlet的输出值比较出现问题
- 蓝以中老师《高等代数》第02章:向量空间与矩阵,笔记
- TextView实现文本的收起与展示
- 嵌入式课堂小测试(一)
- React学习之进阶类型检查(十二)
- 【Unity3d游戏开发】浅谈Unity中的GC以及优化
- 2017-03-18 Ice_cream’s world II
- g++ gdb
- Java代码6种方法获取spring 容器的bean
- 初识文件系统
- java运算符