【Android TextView/EditText 不允许换行】android:lines 与 android:maxLines 与 android:singleLine

在开发需求过程中,遇到 要求用户的昵称输入框 单行 输入展示,且有最大字符数限制,于是 就想当然的使用 android:singleLine 属性,结果被 lint 警告了,提示已被废弃,推荐使用android:maxLines;当然我们可以通过给 EditText 文本框增加监听器,屏蔽掉 Enter 键的输入,完成功能。

// 屏蔽 Enter 键的输入,避免换行
mInfoInput.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                return (event.getKeyCode() == KeyEvent.KEYCODE_ENTER);
            }
        });
// EditText 限制最大可输入字符数
mInfoInput.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxNum)});

当时也没懂这些属性到底啥意思。。。现总结研究分析了一下。这几个属性究竟是什么含义?究竟什么场景下使用呢?

一、android:lines

设置文本的行数,设置两行就显示两行的高度,即使第二行没有数据。
在这里插入图片描述

1、不设置 android:inputType="text" 属性。可以看到输入的内容超过了一行,但是控件并不会继续增加高度以显示更多内容,只展示一行的高度

<EditText
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:hint="test lines maxlines singleline"
        android:lines="1"
        android:text="fdssssssssssssssssssssssssssssssrgrthbgndsfvolegyhreg" />

在这里插入图片描述

2、设置 android:inputType="text" 属性。不会自动换行

<EditText
		android:layout_width="match_parent"
        android:layout_height="100dp"
        android:hint="test lines maxlines singleline"
        android:lines="1"
        android:inputType="text"
        android:text="fdssssssssssssssssssssssssssssssrgrthbgndsfvolegyhreg" />

在这里插入图片描述

二、android:maxLines

如开篇所描述的,该属性作用在 EditText 控件上,并不生效,于是去查 官方 API 文档,如下截图:
在这里插入图片描述
也就是说 TextView 使用属性 maxLines 的时候没有问题,如果是可编辑的,比如 EditText 来使用的话,不管是多行显示还是单行显示,必须要使用 inputType 属性,单行的时候 inputType 不要使用 textMultiLine,多行显示是需要使用 textMultiLine 的。

1、不设置 android:inputType="text" 属性。

<EditText
		android:layout_width="match_parent"
        android:layout_height="100dp"
        android:hint="test lines maxlines singleline"
        android:maxLines="1"
        android:text="fdssssssssssssssssssssssssssssssrgrthbgndsfvolegyhreg" />

在这里插入图片描述

可以这么理解:android:maxLines 是 EditText 最多显示的行数,也就是输入的内容过长需要多行显示时,EditText 最多就是几行的高度,下图是 android:maxLines=2 内容超过限定行数的效果,可以看到输入的内容超过了三行,但是控件并不会继续增加高度以显示更多内容

<EditText
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:hint="test lines maxlines singleline"
        android:maxLines="2"
        android:text="fdsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssrgrthbgndsfvolegyhreg" />

在这里插入图片描述
而如果,我们将 maxLines 改成 3

<EditText
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:hint="test lines maxlines singleline"
        android:maxLines="3"
        android:text="fdsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssrgrthbgndsfvolegyhreg" />

在这里插入图片描述

2、设置 android:inputType="text" 属性。不会自动换行(正确的做法)

<EditText
		android:layout_width="match_parent"
        android:layout_height="100dp"
        android:hint="test lines maxlines singleline"
        android:maxLines="1"
        android:inputType="text"
        android:text="fdssssssssssssssssssssssssssssssrgrthbgndsfvolegyhreg" />

在这里插入图片描述

三、android:singleLine(Deprecated 已废弃)

在 TextView 或者 EditText 设置单行显示的时候,我们最常使用的是 android:singleLine="true" 不过该显示官方不建议使用了,官方建议使用 android:maxLines="1" 来代替。如下测试用例,文本已一行展示

<EditText
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:hint="test lines maxlines singleline"
        android:singleLine="true"
        android:text="fdssssssssssssssssssssssssssssssrgrthbgndsfvolegyhreg" />

在这里插入图片描述

四、总结

其实,该问题是开发过程中遇到的一个小的细节,查阅 API 文档之后知其所以然,遂在此记录一下,也建议大家有问题可以去官网查询 API。

------至所有正在努力奋斗的程序猿们!加油!!
有码走遍天下 无码寸步难行
1024 - 梦想,永不止步!
爱编程 不爱Bug
爱加班 不爱黑眼圈
固执 但不偏执
疯狂 但不疯癫
生活里的菜鸟
工作中的大神
身怀宝藏,一心憧憬星辰大海
追求极致,目标始于高山之巅
一群怀揣好奇,梦想改变世界的孩子
一群追日逐浪,正在改变世界的极客
你们用最美的语言,诠释着科技的力量
你们用极速的创新,引领着时代的变迁

——乐于分享,共同进步,欢迎补充
——Treat Warnings As Errors
——Any comments greatly appreciated
——Talking is cheap, show me the code
——诚心欢迎各位交流讨论!QQ:1138517609
——CSDN:https://blog.csdn.net/u011489043
——简书:https://www.jianshu.com/u/4968682d58d1
——GitHub:https://github.com/selfconzrr

发布了79 篇原创文章 · 获赞 207 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/u011489043/article/details/101678403