ограничение полей 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", курсор не должен опускаться до второй строки. Кто-нибудь может помочь мне, что делать?
21 ответов:
использовать
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>
используя
android:singleLine="true"устарела.просто добавьте свой тип ввода и установите maxline в 1, и все будет работать нормально
android:inputType="text" android:maxLines="1"
android:singleLineтеперь устарел. Из документация:эта константа была устаревшей на уровне API 3.
этот атрибут устарел. Используйте
maxLinesвместо того, чтобы изменить макет статического текста, и использоватьtextMultiLineфлаг В помощью свойства inputType атрибут, а не для редактируемых текстовых мнения (если оба однострочный и помощью свойства inputType поставляются, с помощью свойства inputType флаги будут переопределять значение однострочный).так что вы могли бы просто установить
android:inputType="textEmailSubject"или любое другое значение, соответствующее содержимому поля.
android:maxLines="1" android:inputType="text"добавьте приведенный выше код, чтобы иметь одну строку в теге EditText в вашем макете.
android:singleLine="true" is deprecatedэта константа устаревший на уровень API 3.
этот атрибут устарел. Вместо того, чтобы использовать макс. кол-во строк изменить макет статического текста и использование флага textMultiLine в окне помощью свойства inputType атрибут, а не для редактирования текста мнения (если оба однострочный и помощью свойства inputType поставляются, с помощью свойства inputType флаги переопределение значение singleLine).
Я делал это в прошлом с
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 будет принят MultiLines в любом случае.
Как
android:singleLine="true"теперь подешевел чтобы использоватьandroid: maxLines= "1"
использовать макс. кол-во строк вместо того, чтобы изменить макет статический текст, и использовать флаг textMultiLine в помощью свойства inputType атрибут, а не для редактирования текстовых представлений (если оба однострочный и помощью свойства inputType поставляются, с помощью свойства inputType флаги будут переопределять значение однострочный).
Comments