обмежити редагування тексту одним рядком


312

можливий дублікат: android-singleline-true-not-working-for-edittext

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search...">
</EditText>

Хочеться, щоб вищезазначене EditTextбуло лише одним рядком. Навіть якщо користувач натисне "ввести", курсор не повинен спускатися до другого рядка. Хтось може мені допомогти в цьому?


60
використанняandroid:singleLine=true
Praveenkumar

6
замініть android: lines = "1" на android:singleLine=true.
Мухаммед Ажаруддін Шейх

3
true має бути в цитатах "true"
deepwinter

8
Як застарілий singleLine ви можете використовувати maxLines = 1 та inputType = текст.
sunlover3

4
Використання android:inputType="textVisiblePassword"вирішить проблему
Саад Махмуд

Відповіді:


556

Використовуйте android:maxLines="1"іandroid:inputType="text"

Ви забули атрибут android: maxLines . І зверніться до android: inputType З вашим прикладом нижче наведемо такий результат:

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:inputType="text"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search...">
</EditText>

17
@ Lukasz'Severiaan'Grela в поточному IDE Eclipse, не підказується натяк на знищення, а android: maxLines не обмежує введення однією лінією
mjn

10
використовувати singleline = true
Дакшеш Хатрі

2
@Praveen: Чи можете ви, будь ласка, надати посилання, де написано, що андроїд: singleLine застарілий? Я не бачу його там для API 23. Я не бачу його в документації, а також не отримую попередження, коли я використовую його з 23.0.1SDK
Shobhit Puri

5
Застаріло з рівня API 3. Див.: Developer.android.com/reference/android/R.attr.html#singleLine
Луїс

3
Якщо ви використовуєте лише android: maxLines = "1" не буде працювати. Отже, вам потрібно використовувати і android: inputType = "текст", і maxlines -1.Тоді він буде працювати ідеально
Хануман

193

Використання android:singleLine="true"застаріло.

Просто додайте тип введення та встановіть максимальну лінію на 1, і все буде добре

android:inputType="text"
android:maxLines="1"

80
Якщо ви не вказали inputType, він не з’явиться, про що я дізнався.
Мікро

10
Ваше право. inputType = "textMultiLine" все одно надасть вам багаторядкові, навіть якщо ви встановите максимальну лінію на 1.
ralphgabb

2
Зауважте, що для android:inputType="number"максимуму вже є 1 максимум.
Micer

Це не працює, якщо моє перегляд тексту дуже довге, і я хочу, щоб воно було багаторядковим, але не з символами нового рядка.
хтафоя

@htafoya цей фрагмент коду працює для редагування тексту в одному рядку. Ви можете, однак, почати нове запитання тут у SO.
ralphgabb

54

android:singleLineзараз застаріло. З документації :

Ця константа була застаріла в рівні 3 API.

Цей атрибут застарілий. Використовуйте maxLinesзамість цього, щоб змінити макет статичного тексту і використовувати textMultiLineпрапор в атрибуті inputType замість редакторів тексту, що можна редагувати (якщо подаються однократні та inputType, прапори inputType замінять значення singleLine).

Таким чином, ви можете просто встановити android:inputType="textEmailSubject"будь-яке інше значення, яке відповідає змісту поля.


29
Якщо ви хочете просте текстове поле рядка, використовуйте android:inputType="text".
PhoneixS

Дякую @Mr. Bungle, textMultiLine працював на мене!
користувач1510006

18

Ви повинні додати цей рядок у своєму EditText у xml:

android:maxLines="1"

3
Як відзначали інші відповіді - це застаріло на користь maxLinesта inputTypeпоєднання
Janis Peisenieks

16
android:maxLines="1"
android:inputType="text"

Додайте вищевказаний код, щоб у вашому макеті був один рядок у тезі EditText.

android:singleLine="true" is deprecated

Ця константа була застаріла в рівні 3 API .

Цей атрибут застарілий. Замість цього використовуйте maxLines для зміни макета статичного тексту та використовуйте прапор textMultiLine в атрибуті inputType замість редакторів тексту, що можна редагувати (якщо подаються однократний та вхідний тип, прапори inputType замінять значення singleLine).


13

Тепер android:singleLineатрибут застарілий. Будь ласка, додайте ці атрибути до свого EditText, EditTextщоб мати єдиний рядок.

android:inputType="text"
android:imeOptions="actionNext"
android:maxLines="1"

11

Я це робив раніше, android:singleLine="true"а потім додав слухача для клавіші "enter":

((EditText)this.findViewById(R.id.mytext)).setOnKeyListener(new OnKeyListener() {

    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
            //if the enter key was pressed, then hide the keyboard and do whatever needs doing.
            InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0);

            //do what you need on your enter key press here

            return true;
        }

        return false;
    }
});

11

Це буде працювати для EditText:

android:inputType="text"

Тоді я б встановив максимальну довжину для вхідного тексту:

android:maxLines="1"

Це ті 2, які потрібні зараз.



5

Усі показують спосіб XML, за винятком того, що одна людина показала виклик методу setMaxLines EditText. Однак коли я це зробив, це не спрацювало. Одне, що для мене спрацювало, - це встановлення типу введення.

EditText editText = new EditText(this);
editText.setInputType(InputType.TYPE_CLASS_TEXT);

Це дозволяє символи AZ, az, 0-9 та спеціальні символи, але не дозволяють натискати клавішу Enter. Коли ви натиснете клавішу Enter, вона перейде до наступного компонента GUI, якщо він застосований у вашій програмі.

Ви також можете встановити максимальну кількість символів, які можуть бути введені в цей EditText, інакше воно натисне все, що праворуч від екрану, або просто почне відводити його від самого екрана. Ви можете зробити це так:

InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(8);
editText.setFilters(filters);

Це встановлює максимум символів на 8 у цьому редакційному тексті. Сподіваюся, все це вам допоможе.





1

@Aleks G OnKeyListener () працює дуже добре, але я запустив його з MainActivity, і тому довелося трохи змінити його:

EditText searchBox = (EditText) findViewById(R.id.searchbox);
searchBox.setOnKeyListener(new OnKeyListener() {

    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
            //if the enter key was pressed, then hide the keyboard and do whatever needs doing.
            InputMethodManager imm = (InputMethodManager) MainActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(searchBox.getApplicationWindowToken(), 0);

            //do what you need on your enter key press here

            return true;
        }

        return false;
    }
});

Я сподіваюся, що це допомагає тому, хто намагається зробити те саме.



1

Також важливо звернути увагу, якщо властивість android: inputType - textMultiLine . Якщо так, то властивості android: singleLine, android: imeOptions, android: ellipsize та android maxLines будуть ігноровані, а ваш EditText все одно прийме MultiLines.



1

Як android:singleLine="true"зараз Амортизовано, так і використовуйте

android: maxLines = "1"

Замість цього використовуйте maxLines для зміни макета статичного тексту та використовуйте прапор textMultiLine в атрибуті inputType замість редакторів тексту, що можна редагувати (якщо подаються однократний та вхідний тип, прапори inputType замінять значення singleLine).


1

Використовуйте нижче код замість коду

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:inputType="text"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search..."/>

0

у XML-файл додайте ці властивості до редагування тексту

 android:maxLines="1"


0

Ви повинні додати цей рядок у своєму редагуванні

android:maxLines="1"

та інша річ, не забудьте встановити android:inputType(що завгодно, текст, телефон .., але ви повинні встановити його)


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.