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?

Pankaj Singhal
źródło
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>
Praveenkumar
źródło
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
Przestarzałe od poziomu API 3. Patrz: developer.android.com/reference/android/R.attr.html#singleLine
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"
ralphgabb
źródło
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.

Mr. Bungle
źródło
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"
UGD
źródło
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).

ChrisR
źródło
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"
Kaushik
źródło
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;
    }
});
Aleks G.
źródło
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.

Ray Hunter
źródło
6

Zawierać android:singleLine="true"

Vipul Shah
źródło
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.

Peter griffin
źródło
2

Programowo:

textView.setMaxLines(1);
Anton Duzenko
źródło
2

posługiwać się

android:ellipsize="end"
android:maxLines="1"
Raghu Nagaraju
źródło
2

spróbuj tego kodu

android:inputType="textPersonName"
Felix Cruz
źródło
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.

Mark Cramer
źródło
1

Aby ograniczyć, wystarczy ustawić opcję pojedynczej linii na „true”.

android:singleLine="true"
użytkownik3469914
źródło
3
singleLine jest przestarzałe!
Jamshaid Kamran
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.

Thales Valias
źródło
1

Dodaj tę linię do swojego tekstu edycyjnego

android: inputType = "text"

Sagar Devanga
źródło
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).

Maveň ツ
źródło
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..."/>
Dipak Keshariya
źródło
0

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

 android:maxLines="1"
yousef
źródło
0
android:imeOptions="actionDone"

pracował dla mnie.

bikram
źródło
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ć)

GianhTran
źródło
0

W pliku XML. Poprostu dodaj

android: maxLines = „1”

Kerelos
źródło