先上代码。

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)来设置文字的内边距。

没有特殊要求的情况下推荐第二种方法。

最新文章

  1. "Becoming Functional" 阅读笔记+思维导图
  2. js做通讯录的索引滑动显示效果和滑动显示锚点效果
  3. [HTML/HTML5]1 HTML文档设置
  4. JavaScript中this的一些怪异现象
  5. Kafka - 消费接口分析
  6. POJ3087 Shuffle'm Up(模拟)
  7. HDU 1017 - A Mathematical Curiosity
  8. 使用Vitamio打造自己的Android万能播放器(4)——本地播放(快捷搜索、数据存储)
  9. 基于HTTP协议的下载功能实现
  10. [BZOJ3275] Number (网络流)
  11. Centos7下安装PHP5.5,5.6,7.0----(转载记录一下)
  12. 应用集成mycat,实现mycat的高可用与mysql的读写分离
  13. Vue——报错总结
  14. JVM深入理解<二>
  15. IDEA 根据 Mysql 自动生成
  16. python中使用configparser库,实现配置文件的读取
  17. Jenkins构建自动化任务
  18. [转][osg]关于PagedLOD 加载卸载机制
  19. 一文全解:利用谷歌深度学习框架Tensorflow识别手写数字图片(初学者篇)
  20. MySQL中 optimize table '表名'的作用

热门文章

  1. aqueduct “Uncaught error Bad state: No element" 或者 "NoSuchMethodError: The getter 'location' was called on null.”
  2. random随机数模块
  3. 剑指 Offer II 堆
  4. mysql高级函数FIND_IN_SET,ENUM和SET,LOCATE,ELT,FIELD,INTERVAL,COUNT,CAST,NULLIF,ISNULL,IFNULL,IF,CONVERT,COALESCE
  5. Linux Shell开发功能点
  6. iOS基础 - SceneDelegate
  7. fs.access(path[, mode], callback)
  8. 谷歌Chrome浏览器网页中看视频出现绿屏、闪烁和花屏等显示问题解决方法
  9. Pods与Nodes
  10. k8s入门_label标签、nodeSelector