根据文本内容的长度动态的设置TextView的高度
来源:互联网 发布:python 函数 传入list 编辑:程序博客网 时间:2024/06/07 11:13
在做Android开发中,经常需要根据文本内容的长度和手机屏幕的大小动态的设置TextView的高度。设置TextView的高度后,再设置TextView可以滑动,就可以展示完整的文本,但是TextView的滑动效果不流畅;可以给TextView外层包一个ScrollView,通过设置ScrollView的高度,通过ScrollView的滑动展示完整的文本内容。
根据文本内容的长度设置TextView的高度,首先需要得到TextView填充文本后的高度,然后判断TextView的高度是否超过了限定值,如果超过了则重新设置高度,下面介绍两种方法。
第一种:
int mKeyHeight = (int) JarEnv.sScreenHeight / 3;ScrollView scrollView = (ScrollView) dialogView.findViewById(R.id.scrollView);ViewTreeObserver vto = scrollView.getViewTreeObserver();vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { scrollView.getViewTreeObserver().removeGlobalOnLayoutListener(this); //不调用该方法,会多次执行onGlobalLayout() int svHeight = scrollView.getMeasuredHeight(); if (svHeight > mKeyHeight) { ViewGroup.LayoutParams params = scrollView.getLayoutParams(); params.height = mKeyHeight; } }});
通过这种方法,修改ScrollView的高度时,屏幕有偶发闪一下,
原因是:在View的measure()、layout()、draw()方法调用完后,再调用addOnGlobalLayoutListener(),在addOnGlobalLayoutListener()中又重新设置View的高度,则又会重新运行一次measure()、layout()、draw()方法,导致屏幕会闪一下。
第二种:
int mKeyHeight = (int) JarEnv.sScreenHeight / 3;ScrollView scrollView = (ScrollView) dialogView.findViewById(R.id.scrollView); ViewTreeObserver vto = scrollView .getViewTreeObserver();vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { int svHeight = scrollView.getMeasuredHeight(); if (svHeight > mKeyHeight) { ViewGroup.LayoutParams params = scrollView.getLayoutParams(); params.height = mKeyHeight; return false; //返回false,重新执行measure()、layout()方法 } return true; //返回true,继续执行draw() }});
通过这种方法设置ScrollView屏幕不会闪,是由于View在draw()方法之前调用onPreDraw()方法。
阅读全文
1 0
- 根据文本内容的长度动态的设置TextView的高度
- 动态设置TextView的高度
- 根据文本内容计算cell的高度
- iOS 根据文本内容为TextView动态定义高度
- 根据item的高度以及长度设置listview的高度,
- TextView 根据字符串长度设置textview的宽度
- ios根据内容设置cell的高度
- 根据内容设置web View的高度
- iOS--根据文本内容的长度动态改变label的宽度(有最大值)
- ios开发笔记之如何让tableView根据文本内容动态改变cell的高度
- 根据字符串的长度动态的改变单元格的高度
- Android动态设置TextView的文本格式
- AutoFitTextView-根据文本内容自动调整字体大小的TextView
- 设置textView根据输入的文字自动增加高度
- iphone根据文本内容调整label高度的方法。
- 根据文本内容快速自适应控件的宽度和高度
- 根据字符串长度动态计算UILabelView的高度
- 获取TextView的内容高度
- Python 罗马数字与阿拉伯数字的转换
- [杂题] Ural 1961. Cantonese Dialect
- 斐波那契数列的性质
- 安卓开发进阶之弹性布局FlexboxLayout--Part1(翻译)
- sql 基础知识
- 根据文本内容的长度动态的设置TextView的高度
- Java多线程与并发学习之(四):线程常用方法
- 综合实战:生产者与消费者(利用Object类解决重复操作)
- ssm连表查询Mapper动态代理
- smiley-http-proxy-servlet 反向代理
- 关于Java内部类序列化
- HTML <Tabel>简单使用
- 2017.6.4测试 题一 k好数
- 微积分