ogranicz edittext do pojedynczej linii


312

możliwy duplikat: 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>

Chcę, aby powyższe EditTextzawierało tylko jedną linię. Nawet jeśli użytkownik naciśnie „enter”, kursor nie powinien przejść do drugiej linii. Czy ktoś może mi w tym pomóc?


60
użycieandroid:singleLine=true
Praveenkumar

6
zamień android: linie = „1” na android:singleLine=true.
Mohammed Azharuddin Shaikh

3
true musi być w cytatach „true”
deepwinter

8
Ponieważ singleLine stało się przestarzałe, możesz użyć maxLines = 1 i inputType = text.
sunlover3

4
Korzystanie android:inputType="textVisiblePassword"rozwiąże problem
Saad Mahmud

Odpowiedzi:


556

Użyj android:maxLines="1"iandroid:inputType="text"

Zapomniałeś atrybutu android: maxLines . I zapoznaj się z Androidem: inputType Na przykładzie poniżej podany zostanie ten wynik:

<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>

17
@ Lukasz'Severiaan'Grela w bieżącym środowisku IDE Eclipse, nie jest wyświetlana żadna wskazówka dotycząca wycofania, a Android: maxLines nie ogranicza wejścia do jednej linii
mjn

10
użyj singleline = true
Dakshesh Khatri

2
@Praveen: Czy możesz podać odniesienie tam, gdzie jest napisane, że android: singleLine jest przestarzały? Nie widzę go tam dla API 23. Nie widzę go wspomnianego w dokumentacji, a także nie otrzymuję żadnego ostrzeżenia, gdy używam go z 23.0.1SDK
Shobhit Puri

5
Luis

3
Jeśli używasz tylko Androida: maxLines = "1" nie będzie działać, więc musisz używać obu Androida: inputType = "text" i maxlines -1. Następnie będzie działać idealnie
Hanuman

193

Używanie android:singleLine="true"jest przestarzałe.

Wystarczy dodać typ wprowadzania i ustawić maxline na 1, a wszystko będzie działać dobrze

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

80
Jeśli nie określisz inputType, to nie zadziała.
Micro

10
masz rację. inputType = "textMultiLine" da ci multilinię, nawet jeśli ustawisz maksymalną linię na 1.
ralphgabb

2
Pamiętaj, że dla android:inputType="number"jest już maksymalnie 1 linia.
Micer

To nie działa, jeśli mój tekst jest bardzo długi i chcę, aby był wielowierszowy, ale nie ze znakami nowej linii.
htafoya

@htafoya ten fragment kodu działa, aby edytować tekst w jednym wierszu. Możesz jednak rozpocząć nowe pytanie tutaj w SO.
ralphgabb

54

android:singleLinejest teraz przestarzałe Z dokumentacji :

Ta stała została uznana za przestarzałą na poziomie API 3.

Ten atrybut jest przestarzały. Użyj maxLineszamiast tego, aby zmienić układ tekstu statycznego, i użyj textMultiLineflagi w atrybucie inputType zamiast tego do edytowalnych widoków tekstu (jeśli podano zarówno singleLine, jak i inputType, flagi inputType zastąpią wartość singleLine).

Możesz więc ustawić android:inputType="textEmailSubject"dowolną inną wartość pasującą do zawartości pola.


29
Jeśli chcesz proste pole tekstowe linii, użyj android:inputType="text".
PhoneixS,

Dziekuję panu. Bungle, textMultiLine zadziałało dla mnie!
user1510006

18

Musisz dodać ten wiersz w EditText w XML:

android:maxLines="1"

3
Jak zauważyli inni odpowiedzi - ta została zastąpiona maxLinesi inputTypeskojarzonej
Janis Peisenieks

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

Dodaj powyższy kod, aby mieć jeden wiersz w znaczniku EditText w układzie.

android:singleLine="true" is deprecated

Ta stała została uznana za przestarzałą na poziomie API 3 .

Ten atrybut jest przestarzały. Zamiast tego użyj maxLines, aby zmienić układ tekstu statycznego, a zamiast tego użyj textMultiLine w atrybucie inputType do edytowalnych widoków tekstu (jeśli podano zarówno singleLine, jak i inputType, flagi inputType zastąpią wartość singleLine).


13

Teraz android:singleLineatrybut jest przestarzały. Dodaj te atrybuty do swojego EditText, EditTextaby być pojedynczym wierszem.

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

11

Zrobiłem to w przeszłości, android:singleLine="true"dodając detektor dla klawisza „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;
    }
});

11

To zadziała dla EditText:

android:inputType="text"

Następnie ustawiłbym maksymalną długość tekstu wejściowego:

android:maxLines="1"

To są 2, które są teraz potrzebne.



5

Wszyscy pokazują sposób XML, z wyjątkiem jednej osoby, która wywołała metodę setMaxLines EditText. Jednak kiedy to zrobiłem, to nie działało. Jedną z rzeczy, które działały dla mnie, było ustawienie typu wejścia.

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

Pozwala to na AZ, az, 0-9 i znaki specjalne, ale nie pozwala na naciśnięcie enter. Po naciśnięciu klawisza enter nastąpi przejście do następnego komponentu GUI, jeśli ma zastosowanie w aplikacji.

Możesz także ustawić maksymalną liczbę znaków, które można umieścić w tym EditText, albo zepchnie to, co jest po jego prawej stronie, z ekranu, lub po prostu zacznie spływać z ekranu. Możesz to zrobić w następujący sposób:

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

To ustawia maksymalną liczbę znaków na 8 w tym EditText. Mam nadzieję, że to wszystko pomoże.





1

@Aleks G OnKeyListener () działa naprawdę dobrze, ale uruchomiłem go z MainActivity i musiałem go nieco zmodyfikować:

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

Mam nadzieję, że pomoże to każdemu, kto spróbuje zrobić to samo.



1

Ważne jest również zwrócenie uwagi, jeśli właściwość android: inputType to textMultiLine . Jeśli tak, właściwości android: singleLine, android: imeOptions, android: ellipsize i android maxLines zostaną zignorowane, a Twój EditText i tak zaakceptuje MultiLines.



1

Tak jak android:singleLine="true" obecnie amortyzowane więc użyj

android: maxLines = „1”

Zamiast tego użyj maxLines, aby zmienić układ tekstu statycznego, a zamiast tego użyj textMultiLine w atrybucie inputType do edytowalnych widoków tekstu (jeśli podano zarówno singleLine, jak i inputType, flagi inputType zastąpią wartość singleLine).


1

Użyj kodu poniżej zamiast kodu

<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..."/>

0

w pliku XML dodaj te właściwości do Edytuj tekst

 android:maxLines="1"


0

Musisz dodać tę linię do swojego EditText

android:maxLines="1"

i jeszcze jedno, nie zapomnij ustawić android:inputType(cokolwiek chcesz, SMS-a, telefonu .., ale musisz to ustawić)


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.