Android'de EditText görünümünde çok satıra izin verilsin mi?


Yanıtlar:


1176

Varsayılan olarak EditText, Android'deki tüm widget'lar çok satırlıdır.

İşte bazı örnek kod:

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

6
İnputType öğesinin textMultiLine ve imeOptions to actionSend olarak ayarlanmasının bir yolu var mı? TextMultiLine ve actionSend'e imeOptions olarak inputType ayarladığımda, S4 klavyesinde send yerine bir Enter tuşu görüyorum.
user484691

1
"TextMultiLine ve imeOptions" için bkz. Stackoverflow.com/questions/5014219/…
TOMKA

2
Unutulmaması gereken bir şey, inputTypeen azından linesve minLinesniteliklerini olumsuzlamak . Ben vardı inputType="phone"ve satır öznitelikleri hiçbir etkisi yoktu
ono

2
Bunu kullanmayın. Nedeniyle bir IndexOutOfBoundsExceptionşey android:inputType="textMultiLine"
yazdığınızda

AppCompactTextView kullanıyorsanız bu satıra ihtiyacınız varsa android: inputType = "textMultiLine"
sourav pandit

260

Kullanmayı daha iyi bulabilirsiniz:

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

Çünkü android:singleLinekullanımdan kaldırılmıştır.


Sharduls cevabı kesinlikle modern Apis üzerinde çalışmalıdır. singleLineYanıtlarının kullanımdan kaldırılmış kısmını kaldırdıklarından (uzun zaman önce). Sorunun kendisi ile ilgili olarak, cevaplarının en önemli kısmı budur.
Knossos

Bunu kullanmayın. Bir IndexOutOfBoundsExceptionşey yazar yazmaz neden olur . Çok satırlı şimdi varsayılan.
Chisko

@Chisko XML özniteliği bir IndexOutOfBoundsException özelliğine neden olmaz. Varsayılan inputType değişti (hatta mi?) Ne zaman hatırlayamıyorum, ama muhtemelen geriye uyumluluk nedeniyle bu tutmak en iyisidir.
Knossos

1
@Kossos iyi, senin için olduğu kadar garip de benim için. Kelimenin tam anlamıyla kodu kopyalayıp yapıştırdım ve bunu kaldırıncaya kadar birkaç parametrenin her olası kombinasyonu ile her seferinde çöktüm. Git şekil.
Chisko

42

Bu benim için çalışıyor, aslında şu 2 özellik önemlidir: inputType ve lines . Ayrıca, bir kaydırma çubuğuna ihtiyacınız olabilir, aşağıdaki kod nasıl yapılacağını gösterir:

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

20

Aşağıdaki kod pasajını bu şekilde uyguladım ve iyi çalışıyor. Umarım bu birine yardımcı olur.

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

Şerefe! ...Teşekkürler.


11

Bunu deneyin, bu satırları düzenleme metin görünümünüze ekleyin, benimkini ekleyeceğim. anladığından emin ol

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

ve java sınıfınızda aşağıdaki gibi bu düzenleme metnine tıklama listeleyici yapmak, benimkine göre değiştireceğim, chane isimleri.

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

        });

bu benim için iyi çalışıyor


Teşekkürler! Kaydırılabilir bir görünümde düzenleme metnini kaydırılabilir hale getirdim.
Esdras Lopez


5

Bunların hepsi güzel ancak düzenleme metninizi üst düzey kaydırma görünümünde bulundurmanız durumunda çalışmaz :) Belki de en yaygın örnek, görünür alanın ötesine geçecek kadar çok öğeye sahip olan "Ayarlar" görünümüdür. Bu durumda, ayarları kaydırılabilir yapmak için hepsini kaydırma görünümüne koyarsınız. Ayarlarınızda çok satırlı kaydırılabilir düzenleme metnine ihtiyacınız olması durumunda kaydırma çalışmaz.


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

4

Temada önceden atanmış satır sayısını devre dışı bırakmak için xml özelliğini kullanın: android:lines="@null"


4
android:inputType="textMultiLine"

Bu kod satırı benim için çalışıyor. Metni düzenlediğiniz bu kodu xml dosyanıza ekleyin.


3

Bunu android:inputType="textMultiLine" ilgili alana XML dosyasına eklemeniz yeterlidir.


1

Bunu http://www.pcsalt.com/android/edittext-with-single-line-line-wrapping-and-done-action-in-android/ adresinden öğrendim , ancak web sitesini kendim sevmiyorum. Çok satırlı AMA, giriş düğmesini bir posta düğmesi olarak tutmak istiyorsanız, liste görünümünün "yatay kaydırma" özelliğini yanlış olarak ayarlayın.

android:scrollHorizontally="false"

Xml'de çalışmazsa, programlı olarak yapmak garip bir şekilde çalışır.

listView.setHorizontallyScrolling(false);


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

ve "\ n" etkinliğini kaldırmak için kullanıcı sonraki satıra basın

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

 MyString= editStr.replaceAll("\n"," ");

1

Bazı biri kullanıyorsa AppCompatEditText o zaman ayarlamanız gerekir InputType = "textMultiLine" buradan kopyalayabilirsiniz koddur


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

arka plan için

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

0

Yapılacak başka temiz şey kullanmaktır android:minHeightbirlikte android:layout_height="wrap_content". Bu şekilde, düzenlemenin boyutunu boş olduğunda ayarlayabilir ve kullanıcı bir şeyler girdiğinde, birden fazla satır da dahil olmak üzere kullanıcının girdi miktarına göre uzanır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.