• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 可伸缩的textview,伸缩textview

可伸缩的textview,伸缩textview

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了textview可编辑,textview可滚动,设置textview可点击,textview可点击,textview可滑动等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

可伸缩的textview,伸缩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;
    }

}

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 可伸缩的textview,伸缩textview

相关文章

  • 2017-05-26Android中使用开源框架Fresco处理图片,
  • 2017-05-26android开发零基础入门教程,android入门教程
  • 2017-05-26Android中BroadcastReceiver的两种注册方式(静态和动态)详解,broadcastreceiver
  • 2017-05-26【Android】由浅到深理解AIDL
  • 2017-05-26应用被强杀了怎么办,应用被强杀
  • 2017-05-26Android Studio安装配置、环境搭建详细步骤及基本使用,android安装配置
  • 2017-05-26Android中如何修改编译的资源ID值(默认值是0x7F...可以随意改成0x02~0x7E)
  • 2017-05-26android的消息提示(震动与提示音),android
  • 2017-05-26Mobizen免帐号版,Mobizen帐号版
  • 2017-05-26优化1--布局的优化,优化1--布局优化

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • HandlerThread,handlerthread用法
    • 谈谈LoveLive SIF以及即将诞生的LL练习器,lovelivesif
    • AppManager,androidappmanager
    • 说说Android6.0动态申请权限的那些坑,android6.0动态权限
    • 我的Android进阶之旅之Android自定义View来实现解析lrc歌词同步滚动、上下拖动、缩放歌词等功能
    • android 权限拒绝时的问题解决(详解)
    • Xamarin +vs2015 Android 开发GPS loaction 返回 null 小结,xamarinvs2015
    • Linux内核系列—6.操作系统开发之内存分页机制,linux分页
    • Android学习笔记-TextView(文本框)(二),android-textview
    • Android 应用程序集成Google 登录,androidgoogle

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有