Izinkan multi-baris dalam tampilan EditText di Android?

Jawaban:

1176

Secara default semua EditTextwidget di Android multi-baris.

Berikut ini beberapa contoh kode:

<EditText
    android:inputType="textMultiLine" <!-- Multiline input -->
    android:lines="8" <!-- Total Lines prior display -->
    android:minLines="6" <!-- Minimum lines -->
    android:gravity="top|left" <!-- Cursor Position -->
    android:maxLines="10" <!-- Maximum Lines -->
    android:layout_height="wrap_content" <!-- Height determined by content -->
    android:layout_width="match_parent" <!-- Fill entire width -->
    android:scrollbars="vertical" <!-- Vertical Scroll Bar -->
/>
Shardul
sumber
6
Apakah ada cara untuk mengatur inputType ke textMultiLine dan imeOptions to actionSend? Saya melihat tombol Enter pada keyboard S4 alih-alih mengirim ketika saya mengatur inputType ke textMultiLine dan imeOptions untuk actionSend.
user484691
1
Untuk "textMultiLine and imeOptions" lihat stackoverflow.com/questions/5014219/…
TOMKA
2
Satu hal yang perlu diperhatikan, menambahkan sebuah inputTypemeniadakan setidaknya linesdan minLinesatribut. Aku punya inputType="phone"dan atribut garis tidak berpengaruh
ono
2
Jangan gunakan ini. Penyebab IndexOutOfBoundsExceptiondan segera setelah Anda mengetik sesuatu karenaandroid:inputType="textMultiLine"
Chisko
jika menggunakan AppCompactTextView perlu baris ini android: inputType = "textMultiLine"
sourav pandit
260

Anda mungkin merasa lebih baik menggunakan:

<EditText 
...
android:inputType="textMultiLine"
/>

Ini karena android:singleLinesudah usang.

Knossos
sumber
Jawaban Sharduls tentu harus bekerja pada Apis modern. Karena mereka menghapus bagian yang sudah usang singleLinedari jawaban mereka (dahulu kala). Mengenai pertanyaan itu sendiri, itu adalah bagian terpenting dari jawaban mereka.
Knossos
Jangan gunakan ini. Penyebab IndexOutOfBoundsExceptiondan segera setelah Anda mengetik sesuatu. Multiline sekarang adalah default.
Chisko
@Chisko Atribut XML tidak akan menyebabkan IndexOutOfBoundsException. Saya tidak ingat kapan inputType standar diubah (bahkan?), Tetapi mungkin yang terbaik adalah menyimpannya untuk alasan kompatibilitas ke belakang.
Knossos
1
@ Kossos juga, seaneh ini bagi Anda itu untuk saya. Saya benar-benar menyalin-menyisipkan kode dan jatuh setiap kali dengan setiap kemungkinan kombinasi beberapa parameter sampai saya menghapusnya. Sosok pergi.
Chisko
42

Ini berfungsi untuk saya, sebenarnya 2 atribut ini penting: inputType dan baris . Selain itu, Anda mungkin memerlukan bilah gulir, kode di bawah ini menunjukkan cara membuatnya:

 <EditText
        android:id="@+id/addr_edittext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="top|left"
        android:inputType="textEmailAddress|textMultiLine"
        android:lines="20"
        android:minLines="5"
        android:scrollHorizontally="false"
        android:scrollbars="vertical" />
akustik
sumber
20

Ini adalah bagaimana saya menerapkan potongan kode di bawah ini dan berfungsi dengan baik. Semoga ini bisa membantu seseorang.

<EditText 
    android:id="@+id/EditText02"
    android:gravity="top|left" 
    android:inputType="textMultiLine"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:lines="5" 
    android:scrollHorizontally="false" 
/>

Bersulang! ...Terima kasih.

Nandagopal T
sumber
11

Coba ini, tambahkan baris ini ke tampilan edit teks Anda, saya akan menambahkan milik saya. pastikan kamu memahaminya

android:overScrollMode="always"
android:scrollbarStyle="insideInset"
android:scrollbars="vertical"

<EditText
    android:inputType="textMultiLine"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/editText_newprom_description"
    android:padding="10dp"
    android:lines="5"
    android:overScrollMode="always"
    android:scrollbarStyle="insideInset"
    android:minLines="5"
    android:gravity="top|left"
    android:scrollbars="vertical"
    android:layout_marginBottom="20dp"/>

dan di kelas java Anda buat daftar klik pada teks edit ini sebagai berikut, saya akan menambahkan nama saya, pilih nama sesuai dengan milik Anda.

EditText description;
description = (EditText)findViewById(R.id.editText_newprom_description);

description.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {

                view.getParent().requestDisallowInterceptTouchEvent(true);
                switch (motionEvent.getAction() & MotionEvent.ACTION_MASK){
                    case MotionEvent.ACTION_UP:
                        view.getParent().requestDisallowInterceptTouchEvent(false);
                        break;
                }

                return false;
            }

        });

ini berfungsi baik untuk saya

Chathura Jayanath
sumber
Terimakasih! Ini adalah bagaimana saya membuat teks edit yang dapat digulir dalam tampilan yang dapat digulir.
Esdras Lopez
5

Semua ini bagus tetapi tidak akan berfungsi jika Anda memiliki edittext di dalam tampilan gulir tingkat atas :) Mungkin contoh yang paling umum adalah tampilan "Pengaturan" yang memiliki begitu banyak item sehingga melampaui area yang terlihat. Dalam hal ini Anda menempatkan semuanya dalam tampilan gulir untuk membuat pengaturan dapat digulir. Jika Anda membutuhkan teks edit yang dapat digulir multiline dalam pengaturan Anda, gulirnya tidak akan berfungsi.

Cynichniy Bandera
sumber
5
 <EditText
           android:id="@id/editText" //id of editText
           android:gravity="start"   // Where to start Typing
           android:inputType="textMultiLine" // multiline
           android:imeOptions="actionDone" // Keyboard done button
           android:minLines="5" // Min Line of editText
           android:hint="@string/Enter Data" // Hint in editText
           android:layout_width="match_parent" //width editText
           android:layout_height="wrap_content" //height editText
           /> 
Yogesh Sarvaiya
sumber
4

Untuk menonaktifkan jumlah baris yang sebelumnya ditetapkan dalam tema, gunakan atribut xml: android:lines="@null"

Oleg Bozhko
sumber
4
android:inputType="textMultiLine"

Baris kode ini berfungsi untuk saya. Tambahkan kode yang Anda edit di file xml Anda.

Yıldırım
sumber
3

Cukup tambahkan ini android:inputType="textMultiLine" dalam file XML pada bidang yang relevan.

Dinith
sumber
1

Saya belajar ini dari http://www.pcsalt.com/android/edittext-with-single-line-line-wrapping-and-done-action-in-android/ , meskipun saya sendiri tidak suka situs webnya. Jika Anda ingin multiline TETAPI ingin mempertahankan tombol enter sebagai tombol posting, atur listview "scrolling horizontal" menjadi false.

android:scrollHorizontally="false"

Jika itu tidak bekerja di xml, melakukannya secara program secara aneh bekerja.

listView.setHorizontallyScrolling(false);

Daniel Handojo
sumber
1
<EditText
                android:hint="Address"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:inputType="textMultiLine|textNoSuggestions"
                android:id="@+id/edittxtAddress"
                android:layout_marginLeft="@dimen/textsize2"
                android:textColor="@android:color/white"
                android:scrollbars="vertical"
                android:minLines="2"
            android:textStyle="normal" />

dan di Aktivitas untuk menghapus "\ n" adalah pengguna menekan baris berikutnya

String editStr= edittxtAddress.getText().toString().trim();

 MyString= editStr.replaceAll("\n"," ");
Kapil Parmar
sumber
1

jika seseorang menggunakan AppCompatEditText maka Anda perlu mengatur inputType = "textMultiLine" di sini adalah kode yang dapat Anda salin


   <androidx.appcompat.widget.AppCompatEditText
        android:padding="@dimen/_8sdp"
        android:id="@+id/etNote"
        android:minLines="6"
        android:singleLine="false"
        android:lines="8"
        android:scrollbars="vertical"
        android:background="@drawable/rounded_border"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/_25sdp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="@dimen/_25sdp"
        android:autofillHints=""

        android:gravity="start|top"
        android:inputType="textMultiLine"
         />

untuk latar belakang

   <?xml version="1.0" encoding="utf-8"?>
   <shape android:shape="rectangle" 
    xmlns:android="http://schemas.android.com/apk/res/android">
   <corners android:radius="@dimen/_5sdp"/>
   <stroke android:width="1dp" android:color="#C8C8C8"/>
   </shape>
sourav pandit
sumber
0

Hal lain yang rapi untuk dilakukan adalah menggunakannya android:minHeightbersama android:layout_height="wrap_content". Dengan cara ini Anda dapat mengatur ukuran hasil edit ketika itu kosong, dan ketika pengguna memasukkan barang, itu membentang sesuai dengan berapa banyak input pengguna, termasuk beberapa baris.

contoh
sumber