项目过程中可能会用到可以折叠和展开的TextView , 这里给出一种实现思路,自定义控件。

package com.example.expandtextviewdemo;import android.content.Context;
import android.content.res.TypedArray;
import android.text.SpannableStringBuilder;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;public class ExpandableTextView extends TextView {private static final int DEFAULT_TRIM_LENGTH = 200;private static final String ELLIPSIS = ".....";private CharSequence originalText;private CharSequence trimmedText;private BufferType bufferType;private boolean trim = true;private int trimLength;public ExpandableTextView(Context context) {this(context, null);}public ExpandableTextView(Context context, AttributeSet attrs) {super(context, attrs);TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ExpandableTextView);this.trimLength = typedArray.getInt(R.styleable.ExpandableTextView_trimLength, DEFAULT_TRIM_LENGTH);typedArray.recycle();setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {trim = !trim;setText();requestFocusFromTouch();}});}private void setText() {super.setText(getDisplayableText(), bufferType);}private CharSequence getDisplayableText() {return trim ? trimmedText : originalText;}@Overridepublic void setText(CharSequence text, BufferType type) {originalText = text;trimmedText = getTrimmedText(text);bufferType = type;setText();}private CharSequence getTrimmedText(CharSequence text) {if (originalText != null && originalText.length() > trimLength) {return new SpannableStringBuilder(originalText, 0, trimLength + 1).append(ELLIPSIS);} else {return originalText;}}public CharSequence getOriginalText() {return originalText;}public void setTrimLength(int trimLength) {this.trimLength = trimLength;trimmedText = getTrimmedText(originalText);setText();}public int getTrimLength() {return trimLength;}
}

需要在你的attr.xml 中添加以下内容

<?xml version="1.0" encoding="utf-8"?>
<resources><declare-styleable name="ExpandableTextView"><attr name="trimLength" format="integer" /></declare-styleable></resources>

然后在你的布局文件中引用如下代码:

<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=".ExpandableTextActivity" ><com.example.expandtextviewdemo.ExpandableTextViewandroid:id="@+id/lorem_ipsum"android:textSize="20sp"android:layout_width="fill_parent"android:layout_height="wrap_content" /></RelativeLayout>

最后 , 在你的acitivty中测试一下

package com.example.expandtextviewdemo;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;public class ExpandableTextActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_expandable_text);String yourText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "+ "Ut volutpat interdum interdum. Nulla laoreet lacus diam, vitae "+ "sodales sapien commodo faucibus. Vestibulum et feugiat enim. Donec "+ "semper mi et euismod tempor. Sed sodales eleifend mi id varius. Nam "+ "et ornare enim, sit amet gravida sapien. Quisque gravida et enim vel "+ "volutpat. Vivamus egestas ut felis a blandit. Vivamus fringilla "+ "dignissim mollis. Maecenas imperdiet interdum hendrerit. Aliquam"+ " dictum hendrerit ultrices. Ut vitae vestibulum dolor. Donec auctor ante"+ " eget libero molestie porta. Nam tempor fringilla ultricies. Nam sem "+ "lectus, feugiat eget ullamcorper vitae, ornare et sem. Fusce dapibus ipsum"+ " sed laoreet suscipit. ";ExpandableTextView expandableTextView = (ExpandableTextView) findViewById(R.id.lorem_ipsum);expandableTextView.setText(yourText);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.expandable_text, menu);return true;}}

转载于:https://www.cnblogs.com/zhujiabin/p/4730541.html

android textView 折叠 展开 ExpandableTextView相关推荐

  1. 可展开/折叠的Android TextView:ExpandableTextView

    可展开/折叠的Android TextView:ExpandableTextView

  2. 自己实现一个可以折叠展开的TextView

    很多时候我们的文字过长时,都会选择先展示几行,点击展开按钮的时候再展示全部内容,如图所示: 今天我们就是要实现这样一个功能的textview. 实现的功能 我们实现的可以折叠展开的TextView具有 ...

  3. android动态view展开和收起功能,TextView实现展开收起的效果

    在做Android的过程中,我们经常会遇到TextView显示文本过长的情况,这里我们以开源库ExpandableTextView为例,对其的实现做一讲解: 实现原理描述:expandableText ...

  4. Android多行文本折叠展开效果

    转自:http://blog.csdn.net/qiaoidea/article/details/45568653 [导航]  - 单行文本水平触摸滑动效果 通过EditText实现TextView单 ...

  5. Android TextView内容过长加省略号,点击显示全部内容

    2019独角兽企业重金招聘Python工程师标准>>> 在Android TextView中有个内容过长加省略号的属性,即ellipsize,用法如下: 在xml中: android ...

  6. TextView折叠

    在Android TextView中有个内容过长加省略号的属性,即ellipsize, Causes words in the text that are longer than the view i ...

  7. android+设置字体行高,android textview设置字体的行距和字间距

    android textview设置字体的行距和字间距 字间距 textView有一个属性android:textScaleX是调节字间距的,它的值是一个float型.查看源代码,默认textView ...

  8. Android—ListView Item 展开动画效果

    Android-ListView Item 展开动画效果 最近在做一个关于ListView item的展开效果,类似于 "粮仓" App 的商店页面,点击Item,展开显示子Vie ...

  9. android ellipsize 多行,android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法...

    android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法 布局文件中的TextView属性 复制代码 代码如下: android:id="@+id/b ...

最新文章

  1. js清空本地存储_JS原理、方法与实践 本地存储
  2. 合泰单片机市场占有率_holtek单片机图文全面详解
  3. org.hibernate.hql.ast.QuerySyntaxException is not mapped异常
  4. 微课|中学生可以这样学Python(例11.1):tkinter电子时钟程序(2)
  5. Facebook 发布全新 JavaScript 引擎:Hermes! | CSDN博文精选
  6. DOM(十四):代理检测和事件处理(跨浏览器)
  7. 程序员为什么热衷造轮子?
  8. 你知道Object中有哪些方法及其作用吗?
  9. HTML仿网易云音乐首页静态,用 Vue.js 模仿一个简单的网易云音乐
  10. 烤仔观察丨和你息息相关!DCEP 能否领跑?各国数字货币都在搞什么?
  11. 1156 十个成绩排序
  12. 儿童识字量测试3090字(倪铂颖)
  13. 数据库中查出的树形,获取其所有子孙(递归方式)
  14. 敏捷开发“松结对编程”系列之十二:L型代码结构(质量篇之一)
  15. 融资1350万美元,待开启的元宇宙·数字人
  16. 自控力如何改善了我的生活
  17. 洛谷 P1008 三连击 题解
  18. 旋转编码开关 EC11 的工作原理
  19. java获取百度网页内容
  20. 国内移动互联网应用开发分析

热门文章

  1. MyEclipse和Eclipse中修改编码
  2. 拉丁正方形 java_Leetcode 221 最大正方形 动态规划
  3. mysql 索引建立标准_mysql索引规范
  4. 拦截游戏窗口被移动_家中最值得购入的17款儿童游戏,教你如何从IPAD中夺回小朋友的注意力...
  5. 图像局部特征(十二)--BRISK特征
  6. javaee互联网轻量级框架整合开发_企业开发:Spring框架的简易、高效切入篇
  7. MCU——JLINK接外部电源调试问题
  8. Mysql高可用设计入门
  9. Spark Dataset 入门详解
  10. Android小知识-剖析OkHttp中的五个拦截器(上篇)