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

780   21  

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" или любое другое значение, соответствующее содержимому поля.

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

android:maxLines="1"
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, которые нужны сейчас.

включить 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 будет принят MultiLines в любом случае.

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

android: inputType= "text"

программно:

textView.setMaxLines(1);

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

android: maxLines= "1"

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

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

android:inputType="textPersonName"

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

 android:maxLines="1"
android:imeOptions="actionDone"

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

Comments

    Ничего не найдено.