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

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

21 ответов


использовать android:maxLines="1" и android:inputType="text"

вы забыли android: maxLines. И обратитесь за андроид:помощью свойства 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>

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

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

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

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

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

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

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


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

android:maxLines="1"

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

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

android:singleLine="true" is deprecated

эта константа устаревший на API Уровень 3.

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


теперь android:singleLine атрибут устарел. Пожалуйста, добавьте эти атрибуты в EditText на EditText быть одной линии.

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

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

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

android:inputType="text"

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

android:maxLines="1"

это 2, которые необходимы сейчас.


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


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

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

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

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

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

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


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

android:singleLine="true"

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

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

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

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:lines="1"
    android:singleLine="true"
    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..."/>

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

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


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


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

андроид:помощью свойства inputType="текст"


программно:

textView.setMaxLines(1);

As android:singleLine="true" теперь подешевел чтобы использовать

для Android:maxlines, которое="1"

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


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

android:inputType="textPersonName"

в XML-файле добавьте эти свойства в Edit Text

 android:maxLines="1"

android:imeOptions="actionDone"

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