Ограничить edittext одной строкой

возможный дубликат: 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 только одну строку. Даже если пользователь нажимает "enter", курсор не должен опускаться во вторую строку. Может ли кто-нибудь помочь мне в этом?

Ответ 1

Используйте 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>

Ответ 2

Использование android:singleLine="true" устарело.

Просто добавьте свой тип ввода и установите maxline равным 1, и все будет нормально работать

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

Ответ 3

android:singleLine теперь устарел. Из документации:

Эта константа была устарела в уровне API 3.

Этот атрибут устарел. Используйте maxLines вместо этого, чтобы изменить макет статического текста и используйте флаг textMultiLine в атрибуте inputType вместо доступных для редактирования текстовых представлений (если поставляются как singleLine, так и inputType, флаги inputType будут переопределять значение singleLine).

Таким образом, вы можете просто установить android:inputType="textEmailSubject" или любое другое значение, соответствующее содержимому поля.

Ответ 4

Вы должны добавить эту строку в свой EditText в xml:

android:maxLines="1"

Ответ 5

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

Добавьте вышеприведенный код, чтобы иметь одну строку в теге EditText в вашем макете.

android:singleLine="true" is deprecated

Эта константа устарела в уровне API 3.

Этот атрибут устарел. Вместо этого используйте maxLines, чтобы изменить макет статического текста и использование флага textMultiLine в вместо атрибута inputType для редактируемых текстовых представлений (если оба singleLine и inputType, флаги inputType будут переопределить значение singleLine).

Ответ 6

Теперь атрибут android:singleLine устарел. Добавьте эти атрибуты в свой EditText для EditText как одну строку.

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

Ответ 7

В прошлом я делал это с 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;
    }
});

Ответ 8

Это будет работать для EditText:

android:inputType="text"

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

android:maxLines="1"

Это те 2, которые нужны сейчас.

Ответ 9

Включить android:singleLine="true"

Ответ 10

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

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

Это позволяет использовать A-Z, a-z, 0-9 и специальные символы, но не позволяет вводить нажатие. Когда вы нажмете enter, он перейдет к следующему компоненту GUI, если это применимо в вашем приложении.

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

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

Это устанавливает максимальные символы в 8 в этом EditText. Надеюсь, это поможет вам.

Ответ 11

использовать

android:ellipsize="end"
android:maxLines="1"

Ответ 12

Programatically:

textView.setMaxLines(1);

Ответ 13

пожалуйста, попробуйте этот код

android:inputType="textPersonName"

Ответ 14

Используйте код ниже, а не код

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

Ответ 15

@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;
    }
});

Я надеюсь, что это поможет любому, кто пытается сделать то же самое.

Ответ 16

Как android:singleLine="true" теперь Изменилось, поэтому используйте

Android: MaxLines = "1"

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

Ответ 17

Чтобы ограничить, вам просто нужно установить параметр одиночной строки на "true".

android:singleLine="true"

Ответ 18

Также важно обратить внимание, если свойство android: inputType textMultiLine. Если это так, свойства android: singleLine, android: imeOptions, android: ellipsize и android maxLines будут проигнорированы, и ваш EditText будет принимать MultiLines в любом случае.

Ответ 19

Добавьте эту строку в свой edittext

Android: inputType = "текст"

Ответ 20

в файле XML добавьте эти свойства в "Редактировать текст"

 android:maxLines="1"

Ответ 21

android:imeOptions="actionDone"

работал у меня.