在开发需求过程中,遇到 要求用户的昵称输入框 单行 输入展现,且有最大字符数限制,所以 就想当然的运用 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

设置文本的行数,设置两行就显现两行的高度,即便第二行没有数据。

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

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" />

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

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 TextView/EditText 不允许换行】android:lines 与 android:maxLines 与 android:singleLine

二、android:maxLines

如开篇所描绘的,该特点作用在 EditText 控件上,并不收效,所以去查 官方 API 文档,如下截图:

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

也便是说 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 TextView/EditText 不允许换行】android:lines 与 android:maxLines 与 android:singleLine

能够这么理解: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" />

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

而假如,咱们将 maxLines 改成 3

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

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

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 TextView/EditText 不允许换行】android:lines 与 android:maxLines 与 android:singleLine

三、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" />

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

四、总结

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

——至一切正在努力奋斗的程序猿们!加油!!
有码走遍全国 无码步履维艰
1024 – 愿望,永不止步!
爱编程 不爱Bug
爱加班 不爱黑眼圈
顽固 但不偏执
疯狂 但不疯癫
日子里的菜鸟
工作中的大神
身怀瑰宝,一心憧憬星辰大海
追求极致,方针始于高山之巅
一群怀揣好奇,愿望改动国际的孩子
一群追日逐浪,正在改动国际的极客
你们用最美的语言,诠释着科技的力气
你们用极速的立异,引领着时代的变迁

——乐于分享,共同进步,欢迎弥补
——Treat Warnings As Errors
——Any comments greatly appreciated
——Talking is cheap, show me the code
——CSDN:blog.csdn.net/u011489043
——GitHub:github.com/selfconzrr\