Недавно я использовал TextInputEditText , и у меня возникла ошибка линта, что атрибут singleLine устарел

<android.support.design.widget.TextInputEditText
            android:id="@+id/my_edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/string_hint_dob"
            android:lines="5"/>
</android.support.design.widget.TextInputLayout>

Выполнение зачеркивания, как показано ниже:

enter image description here

Есть ли альтернативный способ для этого?

53
Pratik Butani 6 Май 2016 в 22:29

7 ответов

Лучший ответ

android:singleLine не рекомендуется, поскольку API 3, вы должны использовать вместо него android:maxLines (в вашем случае android:maxLines="1").

Причина устаревания - плохая работа. В любом случае атрибут singleLine не будет удален, потому что это все еще единственный способ произвести некоторые эффекты, которые не может произвести android:maxLines:

Например

Это приведет к прокрутке горизонтального текста в одной строке, если текст выделен.

<TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:singleLine="true"
     android:ellipsize="end"
     android:scrollHorizontally="true" />

Вместо этого это не сработает:

<TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:maxLines="1"
     android:ellipsize="end"
     android:scrollHorizontally="true" />
37
Giorgio Antonioli 6 Май 2016 в 19:50

Всегда определяйте тип ввода для одной строки

Пример: inputType="text"

Вам не нужно больше ничего делать.

33
Arihant 14 Июн 2017 в 18:17
<EditText
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:inputType="text"
      android:maxLines="1"
      />

Используйте android:inputType="text" и android:maxLines="1" вместе

14
Ketan Ramani 16 Мар 2018 в 12:34

Следуя комментарию Хуана Хосе Мелеро Гомеса, я хотел бы добавить дополнительную информацию:

Если вы пытаетесь установить imeAction для своего EditText, например actionSearch, настройки android:maxLines="1" будет недостаточно. Добавление android:inputType="text" является обязательным , если вы хотите видеть значок поиска.

5
Rafael Ruiz Muñoz 28 Июл 2017 в 09:32

Необходимо заменить android:singleLine="true" на android:maxLines="1", если вы хотите указать imeOptions, необходимо добавить эту строку android:inputType="number|text ..."

0
Nicolae Cozma 21 Авг 2019 в 14:49

Если вы переходите с устаревшего android:singleLine="true" на android:maxLines="1", не забудьте добавить android:ellipsize="end", если вы хотите сохранить трехточечный символ, если ваша строка слишком длинная для текстового поля

0
iddqdburger 30 Июн 2020 в 13:32