全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

可伸缩的textview详解(推荐)

在Android原生的TextView的基础上,可收缩/扩展的TextView:PhilExpandableTextView。

实现原理:核心是控制TextView的max lines。在TextView的初始化阶段但尚未绘制出View的时候,使用ViewTreeObserver,监听onPreDraw事件,获取TextView正常显示需要显示的总行数,但只给TextView设置最大运行的行数(小于总行数),从而造成TextView的收缩摘要效果,当用户通过按钮或其他方式扩展时候,把TextView的最大行数设置为正常显示完全的行数+1(+1是保持余量,避免不足)。

public class MainActivity extends Activity { 
  private String str = ""; 
 
  @Override
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
 
    for (int i = 0; i < 200; i++) { 
      str = str + i + " "; 
    } 
    final ExpandableTextView etv = (ExpandableTextView) findViewById(R.id.etv); 
    etv.setText(str); 
 
    Button btn = (Button) findViewById(R.id.btn); 
 
    btn.setOnClickListener(new OnClickListener() { 
 
      @Override
      public void onClick(View v) { 
        boolean b = etv.getExpandablestatus(); 
 
        b = !b; 
        etv.setExpandable(b); 
 
      } 
    }); 
 
  } 
 
}

PhilExpandableTextView.java:

package com.ganchuanpu.ExpandableTextView; 
 
import android.content.Context; 
import android.util.AttributeSet; 
import android.view.ViewTreeObserver; 
import android.view.ViewTreeObserver.OnPreDrawListener; 
import android.widget.TextView; 
import android.widget.Toast; 
 
public class ExpandableTextView extends TextView { 
 
  // 最大行,默认显示3行 
  private final int MAX = 3; 
  // 完全展开需要的行数 
  private int lines; 
 
  private ExpandableTextView mExpandableTextView; 
 
  private boolean expandablestatus = false; 
 
  // 构造方法用两个参数的 
  public ExpandableTextView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    mExpandableTextView = this; 
    init(); 
 
  } 
 
  private void init() { 
    // 在view绘制之前的时候执行,在onDraw之前 
    ViewTreeObserver mViewTreeObserver = this.getViewTreeObserver(); 
    mViewTreeObserver.addOnPreDrawListener(new OnPreDrawListener() { 
 
      @Override
      public boolean onPreDraw() { 
        // 避免重复监听 
        mExpandableTextView.getViewTreeObserver().removeOnPreDrawListener(this); 
        // 获得内容行数 
        lines = getLineCount(); 
 
        return true; 
      } 
    }); 
    setExpandable(false); 
 
  } 
  // 是否展开或者收缩, 
  // true,展开; 
  // false,不展开 
 
  public void setExpandable(boolean isExpand) { 
    if (isExpand) { 
      setMaxLines(lines + 1); 
    } else
      setMaxLines(MAX); 
 
    expandablestatus = isExpand; 
  } 
 
  public boolean getExpandablestatus() { 
    return expandablestatus; 
  } 
 
}

以上这篇可伸缩的textview详解(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# textview伸缩  # android使用Textview实现伸缩效果  # 行数  # 给大家  # 正常显示  # 基础上  # 希望能  # 这篇  # 设置为  # 小编  # 大家多多  # 大行  # 只给  # void  # protected  # Bundle  # onCreate  # private  # Activity  # String  # Override  # str 


相关文章: 网站制作公司排行榜,四大门户网站排名?  如何快速搭建自助建站会员专属系统?  如何在IIS中新建站点并配置端口与IP地址?  建站之星如何一键生成手机站?  Android使用GridView实现日历的简单功能  大连网站制作公司哪家好一点,大连买房网站哪个好?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Python如何创建带属性的XML节点  建站之星Pro快速搭建教程:模板选择与功能配置指南  黑客如何通过漏洞一步步攻陷网站服务器?  家具网站制作软件,家具厂怎么跑业务?  建站之星如何取消后台验证码生成?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  如何快速辨别茅台真假?关键步骤解析  制作网站怎么制作,*游戏网站怎么搭建?  大连 网站制作,大连天途有线官网?  制作证书网站有哪些,全国城建培训中心证书查询官网?  Swift开发中switch语句值绑定模式  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  行程制作网站有哪些,第三方机票电子行程单怎么开?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  建站之星安装模板失败:服务器环境不兼容?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  建站168自助建站系统:快速模板定制与SEO优化指南  建站之星如何通过成品分离优化网站效率?  建站之星后台管理:高效配置与模板优化提升用户体验  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  已有域名能否直接搭建网站?  如何确认建站备案号应放置的具体位置?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  如何零成本快速生成个人自助网站?  如何有效防御Web建站篡改攻击?  如何挑选优质建站一级代理提升网站排名?  公司门户网站制作流程,华为官网怎么做?  如何快速搭建高效可靠的建站解决方案?  如何在橙子建站上传落地页?操作指南详解  手机网站制作与建设方案,手机网站如何建设?  建站之星如何修改网站生成路径?  建站主机选择指南:服务器配置与SEO优化实战技巧  建站之星如何快速生成多端适配网站?  建站主机是什么?如何选择适合的建站主机?  小型网站制作HTML,*游戏网站怎么搭建?  如何构建满足综合性能需求的优质建站方案?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何用PHP快速搭建CMS系统?  网站制作话术技巧,网站推广做的好怎么话术?  如何选择适合PHP云建站的开源框架? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。