ограничить 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"
или любое другое значение, соответствующее содержимому поля.
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, которые необходимы сейчас.
все показывают путь 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"
используйте код ниже вместо кода
<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 будет принят многострочными в любом случае.
As android:singleLine="true"
теперь подешевел чтобы использовать
для Android:maxlines, которое="1"
вместо этого используйте maxLines для изменения макета статического текста и используйте флаг textMultiLine в атрибуте inputType для редактируемых текстовых представлений (если заданы singleLine и inputType, флаги inputType переопределят значение singleLine).