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?

Pankaj Singhal
sumber
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>
Praveenkumar
sumber
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"
ralphgabb
sumber
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.

Tuan Bungle
sumber
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"
UGD
sumber
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).

ChrisR
sumber
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"
Kaushik
sumber
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;
    }
});
Aleks G
sumber
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.

Ray Hunter
sumber
6

Termasuk android:singleLine="true"

Vipul Shah
sumber
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.

Peter Griffin
sumber
2

Secara terprogram:

textView.setMaxLines(1);
Anton Duzenko
sumber
2

menggunakan

android:ellipsize="end"
android:maxLines="1"
Raghu Nagaraju
sumber
2

silakan coba kode ini

android:inputType="textPersonName"
Felix Cruz
sumber
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.

Mark Cramer
sumber
1

Untuk membatasi Anda hanya perlu mengatur opsi baris tunggal pada "true".

android:singleLine="true"
pengguna3469914
sumber
3
singleLine sudah usang!
Jamshaid Kamran
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.

Thales Valias
sumber
1

Tambahkan baris ini ke edittext Anda

android: inputType = "text"

Sagar Devanga
sumber
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).

Maveň ツ
sumber
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..."/>
Dipak Keshariya
sumber
0

dalam XML File tambahkan properti ini di Edit Teks

 android:maxLines="1"
Yousef
sumber
0
android:imeOptions="actionDone"

bekerja untukku.

bikram
sumber
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)

GianhTran
sumber
0

Di file XML. Cukup tambahkan

android: maxLines = "1"

Kerelos
sumber