flutter TextField 高度问题(包括使用maxlines自适应高度以及改变textfield组件自定义高度)
先上代码。
Container( color: Colors.blue,
constraints: BoxConstraints(
minHeight: 10,
maxHeight: 20 ),
child: TextField(
// maxLines: 3,
// minLines: 1,
// style: TextStyle(fontSize: 7),
decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric(vertical:1),
isCollapsed: true,
fillColor: Colors.red,
filled: true, prefixIcon: Icon(Icons.label,size: 7,),
prefixIconConstraints: BoxConstraints(),
// hintText: '请输入',
// hintStyle: TextStyle(fontSize: 16),
border: OutlineInputBorder( borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(20),
)
),
),
),
首先 先说一下如何使用maxlines 高度问题。
在我们设置了maxlines之后,例如我们设置maxlines为3的时候,那么默认TextField高度会以三倍的方式显示。我们想要默认是1行,根据用户的输入量去动态改变TextField高度,直到到达我们设定的最大行数。
解决办法:就是在设置maxlines值的时候,同样加一个minlines为1,那么默认就会是1行,根据用户输入会增长到3行。这样就解决了。
那么还有个问题,如果设置了prefixIcon:icon图标之后,组件就有一个固定高度,一般都height没办法改变。如何将TextField设置成我们自己想要的高度呢。有两个办法,往下看。
第一个办法:设置外部组件的最大高度。
我们用到的是Container的BoxConstraints()。具体写法,可以看上面代码。
有4个参数maxWidth,minWidth,maxHeight,minHeight,也就是容易的最小宽度,最大宽度,最小高度,最大高度。
我们用到的是maxHeight,minHeight这两个。
详解:
当我们设置maxheight为30的时候,相对的TextField高度也就改变为30。这时候会碰到一个问题,那就是文字位置不是上下居中的。会跑偏。
这时候我们结合contentPadding: EdgeInsets.symmetric(vertical:8), 这个来用,意思文字上下各添加8像素补白,具体可自己调整像素大小。上面代码可参考。
第二个办法:设置isCollapsed为true
isConllapsed 是InputDecoration中的参数。
相当于高度包裹的意思。
通俗一点都讲就是根据你设置的字体大小来自适应高度。字体包括hintStyle和style两个,也就是提示型文字的大小,和普通用户输入文字的大小来确定,推荐两个设置成一样的。
只要设置了这个值,TextField就会根据字体大小来设置高度。配合contentPadding:EdgeInsets.all(5)来设置文字的内边距。
没有特殊要求的情况下推荐第二种方法。
最新文章
- ";Becoming Functional"; 阅读笔记+思维导图
- js做通讯录的索引滑动显示效果和滑动显示锚点效果
- [HTML/HTML5]1 HTML文档设置
- JavaScript中this的一些怪异现象
- Kafka - 消费接口分析
- POJ3087 Shuffle'm Up(模拟)
- HDU 1017 - A Mathematical Curiosity
- 使用Vitamio打造自己的Android万能播放器(4)——本地播放(快捷搜索、数据存储)
- 基于HTTP协议的下载功能实现
- [BZOJ3275] Number (网络流)
- Centos7下安装PHP5.5,5.6,7.0----(转载记录一下)
- 应用集成mycat,实现mycat的高可用与mysql的读写分离
- Vue——报错总结
- JVM深入理解<;二>;
- IDEA 根据 Mysql 自动生成
- python中使用configparser库,实现配置文件的读取
- Jenkins构建自动化任务
- [转][osg]关于PagedLOD 加载卸载机制
- 一文全解:利用谷歌深度学习框架Tensorflow识别手写数字图片(初学者篇)
- MySQL中 optimize table &#39;表名&#39;的作用
热门文章
- aqueduct “Uncaught error Bad state: No element"; 或者 ";NoSuchMethodError: The getter &#39;location&#39; was called on null.”
- random随机数模块
- 剑指 Offer II 堆
- mysql高级函数FIND_IN_SET,ENUM和SET,LOCATE,ELT,FIELD,INTERVAL,COUNT,CAST,NULLIF,ISNULL,IFNULL,IF,CONVERT,COALESCE
- Linux Shell开发功能点
- iOS基础 - SceneDelegate
- fs.access(path[, mode], callback)
- 谷歌Chrome浏览器网页中看视频出现绿屏、闪烁和花屏等显示问题解决方法
- Pods与Nodes
- k8s入门_label标签、nodeSelector