batasi edittext menjadi satu baris


312

kemungkinan rangkap: 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>

Saya ingin membuat di atas EditTexthanya memiliki satu baris. Bahkan jika pengguna menekan "masuk" kursor tidak boleh turun ke baris kedua. Adakah yang bisa membantu saya melakukan itu?


60
useandroid:singleLine=true
Praveenkumar

6
ganti android: lines = "1" dengan android:singleLine=true.
Mohammed Azharuddin Shaikh

3
true harus dalam tanda kutip "true"
deepwinter

8
Karena singleLine menjadi usang, Anda dapat menggunakan maxLines = 1 dan inputType = teks.
sunlover3

4
Menggunakan android:inputType="textVisiblePassword"akan memecahkan masalah
Saad Mahmud

Jawaban:


557

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

Anda lupa atribut android: maxLines . Dan merujuk untuk android: inputType Dengan contoh Anda, di bawah ini akan memberikan hasil ini:

<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 di Eclipse IDE saat ini, tidak ada petunjuk penghentian yang ditampilkan, dan android: maxLines tidak membatasi input ke satu baris
mjn

10
use singleline = true
Dakshesh Khatri

2
@Praveen: Bisakah Anda memberikan referensi di mana dikatakan android: singleLine sudah usang? Saya tidak bisa melihatnya di sana untuk API 23. Saya tidak melihatnya disebutkan dalam dokumentasi dan juga saya tidak mendapatkan peringatan ketika saya menggunakannya dengan 23.0.1SDK
Shobhit Puri

5
Tidak digunakan lagi sejak API level 3. Lihat: developer.android.com/reference/android/R.attr.html#singleLine
Luis

3
Jika Anda hanya menggunakan android: maxLines = "1" tidak akan berfungsi. Jadi, Anda perlu menggunakan kedua android: inputType = "text" dan maxlines -1.Kemudian itu akan bekerja dengan sempurna
Hanuman

194

Penggunaan android:singleLine="true"sudah usang.

Cukup tambahkan tipe input Anda dan atur maxline ke 1 dan semuanya akan berfungsi dengan baik

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

80
Jika Anda tidak menentukan inputType itu tidak akan berfungsi adalah apa yang saya temukan.
Micro

10
kanan Anda. inputType = "textMultiLine" masih akan memberi Anda multiline bahkan jika Anda menetapkan baris maks ke 1.
ralphgabb

2
Perhatikan bahwa untuk android:inputType="number"sudah ada maks 1 baris.
Micer

Ini tidak berfungsi jika tampilan teks saya sangat panjang dan saya ingin multiline, tetapi tidak dengan karakter baris baru.
htafoya

@htafoya cuplikan kode ini berfungsi untuk membuat satu baris teks edit. Namun Anda dapat, memulai pertanyaan baru di sini di SO.
ralphgabb

54

android:singleLinesekarang sudah ditinggalkan. Dari dokumentasi :

Konstanta ini sudah tidak digunakan lagi di API level 3.

Atribut ini sudah usang. Gunakan maxLinesalih-alih untuk mengubah tata letak teks statis, dan gunakan textMultiLinebendera pada atribut inputType sebagai gantinya untuk tampilan teks yang dapat diedit (jika singleLine dan inputType disediakan, flag inputType akan mengesampingkan nilai singleLine).

Jadi, Anda bisa mengatur android:inputType="textEmailSubject"atau nilai lain apa pun yang cocok dengan konten bidang.


29
Jika Anda ingin bidang teks baris sederhana, gunakan android:inputType="text".
PhoneixS

Terima kasih tuan. Bungle, textMultiLine bekerja untuk saya!
user1510006

18

Anda harus menambahkan baris ini di EditText Anda di xml:

android:maxLines="1"

3
Sebagai jawaban lain telah mencatat - ini telah usang dalam mendukung maxLinesdan inputTypekombinasi
Janis Peisenieks

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

Tambahkan kode di atas untuk memiliki satu baris di tag EditText di tata letak Anda.

android:singleLine="true" is deprecated

Konstanta ini sudah tidak digunakan lagi di API level 3 .

Atribut ini sudah usang. Gunakan maxLines sebagai gantinya untuk mengubah tata letak teks statis, dan gunakan flag textMultiLine dalam atribut inputType sebagai gantinya untuk tampilan teks yang dapat diedit (jika singleLine dan inputType disediakan, flag inputType akan menimpa nilai singleLine).


13

Sekarang android:singleLineatribut sudah usang. Harap tambahkan atribut ini ke Anda EditTextuntuk EditTextmenjadi satu baris.

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

11

Saya telah melakukan ini di masa lalu dengan android:singleLine="true"dan kemudian menambahkan pendengar untuk kunci "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

Ini akan berfungsi untuk EditText:

android:inputType="text"

Lalu saya akan menetapkan panjang maksimum untuk teks input:

android:maxLines="1"

Mereka adalah 2 yang dibutuhkan sekarang.



5

Semua orang menunjukkan cara XML, kecuali satu orang menunjukkan memanggil metode setMaxLines EditText. Namun, ketika saya melakukan itu, itu tidak berhasil. Satu hal yang berhasil bagi saya adalah pengaturan tipe input.

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

Ini memungkinkan AZ, az, 0-9, dan karakter khusus, tetapi tidak memungkinkan masuk untuk ditekan. Ketika Anda menekan enter, itu akan pergi ke komponen GUI berikutnya, jika berlaku di aplikasi Anda.

Anda mungkin juga ingin mengatur jumlah karakter maksimum yang dapat dimasukkan ke dalam EditText itu, atau yang lain akan mendorong apa pun di sebelah kanannya dari layar, atau mulai meninggalkan layar itu sendiri. Anda dapat melakukan ini seperti ini:

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

Ini menetapkan karakter maks ke 8 dalam EditText itu. Semoga semua ini membantu Anda.





1

@Aleks G OnKeyListener () berfungsi sangat baik, tetapi saya menjalankannya dari MainActivity sehingga harus memodifikasinya sedikit:

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

Saya harap ini membantu siapa pun yang mencoba melakukan hal yang sama.



1

Juga penting untuk memperhatikan jika properti android: inputType adalah textMultiLine . Jika demikian, properti android: singleLine, android: imeOptions, android: ellipsize dan android maxLines akan diabaikan dan EditText Anda akan tetap menerima MultiLines.



1

Seperti android:singleLine="true"yang sekarang Disusutkan jadi gunakan

android: maxLines = "1"

Gunakan maxLines sebagai gantinya untuk mengubah tata letak teks statis, dan gunakan flag textMultiLine dalam atribut inputType sebagai gantinya untuk tampilan teks yang dapat diedit (jika singleLine dan inputType disediakan, flag inputType akan menimpa nilai singleLine).


1

Gunakan Kode Di Bawah Ini alih-alih kode Anda

<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

dalam XML File tambahkan properti ini di Edit Teks

 android:maxLines="1"

0
android:imeOptions="actionDone"

bekerja untukku.


0

Anda harus menambahkan baris ini di EditText Anda

android:maxLines="1"

dan satu hal lagi, jangan lupa atur android:inputType(apa pun yang Anda inginkan, teks, telepon .., tetapi Anda harus mengaturnya)


0

Di file XML. Cukup tambahkan

android: maxLines = "1"

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.