Ограничить 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"
работал у меня.