AndroidのEditTextビューで複数行を許可しますか?


回答:


1176

デフォルトではEditText、Androidのすべてのウィジェットは複数行です。

ここにいくつかのサンプルコードがあります:

<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
inputTypeをtextMultiLineに、imeOptionsをactionSendに設定する方法はありますか?inputTypeをtextMultiLineに、imeOptionsをactionSendに設定すると、S4キーボードのEnterキーが送信ではなく表示されます。
user484691 2013年

1
「textMultiLineおよびimeOptions」については、stackoverflow.com
questions

2
注意すべき点の1つはinputType、少なくともlinesminLines属性を否定することです。私は持っていinputType="phone"て、ライン属性は効果がありませんでした
小野2015

2
これは使用しないでください。IndexOutOfBoundsException次の理由で何かを入力するとすぐに発生しますandroid:inputType="textMultiLine"
チスコ

AppCompactTextViewを使用する場合にこの行が必要な場合android:inputType = "textMultiLine"
sourav pandit

260

あなたはそれを使う方が良いかもしれません:

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

これはandroid:singleLine非推奨であるためです。


Shardulsの答えは確かに現代のApisで機能するはずです。彼らsingleLineは彼らの回答の非推奨部分を削除したので(ずっと前に)。質問自体に関しては、それが彼らの回答の最も重要な部分です。
クノッソス

これは使用しないでください。入力するIndexOutOfBoundsExceptionとすぐにが発生します。複数行がデフォルトになりました。
チスコ

@Chisko XML属性はIndexOutOfBoundsExceptionを引き起こしません。デフォルトのinputTypeがいつ変更されたかは思い出せません(偶数でしたか?)。ただし、下位互換性の理由から、これを保持することをお勧めします。
クノッソス

1
@Knossosまあ、それはあなたにとって奇妙なことですが、私にとっても奇妙です。私は文字通りコードをコピーアンドペーストし、削除するまで、いくつかのパラメーターの可能なすべての組み合わせで毎回クラッシュしました。図を行きます。
チスコ

42

これは私にとっては機能しますが、実際にはinputTypelinesという 2つの属性が重要です。さらに、スクロールバーが必要な場合があります。以下のコードは、スクロールバーの作成方法を示しています。

 <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

これが私が以下のコードスニペットを適用した方法であり、正常に動作しています。これが誰かを助けることを願っています。

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

乾杯!...ありがとう。


11

これを試して、これらの行を編集テキストビューに追加してください。私が追加します。必ず理解してください

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

そしてあなたのjavaクラスで、この編集テキストにクリックリストナーを次のようにしてください、あなたの名前に応じて私の名前を変更します。

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

        });

これは私にとってはうまくいきます


ありがとうございます!これは、スクロール可能なビュー内でエディットテキストをスクロール可能にした方法です。
Esdras Lopez


5

これらすべては素晴らしいですが、上位レベルのスクロールビュー内にedittextがある場合は機能しません:)おそらく最も一般的な例は、表示領域を超えるほど多くの項目を含む「設定」ビューです。この場合、それらをすべてスクロールビューに配置して、設定をスクロール可能にします。設定で複数行のスクロール可能な編集テキストが必要な場合、そのスクロールは機能しません。


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

以前にテーマで割り当てられた行数を無効にするには、xml属性を使用します。 android:lines="@null"


4
android:inputType="textMultiLine"

このコード行は私にとってはうまくいきます。このテキストをedittextとしてxmlファイルに追加します。


3

これandroid:inputType="textMultiLine" をXMLファイルの関連フィールドに追加するだけ です。


1

私はhttp://www.pcsalt.com/android/edittext-with-single-line-line-wrapping-and-done-action-in-android/からこれを学びましたが、私自身はウェブサイトが好きではありません。複数行で入力ボタンを投稿ボタンとして保持したい場合は、リストビューの「水平スクロール」をfalseに設定します。

android:scrollHorizontally="false"

xmlで機能しない場合、プログラムで奇妙に機能します。

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

アクティビティで「\ n」を削除するには、ユーザーが次の行を押します

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

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

1

誰かがAppCompatEditTextを使用している場合は、inputType = "textMultiLine"を設定する必要がありますここに、コピーできるコードを指定します


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

背景用

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

もう1つの便利なことは、とandroid:minHeight一緒に使用することですandroid:layout_height="wrap_content"。このようにして、編集が空のときに編集のサイズを設定できます。ユーザーがデータを入力すると、複数の行を含めて、ユーザーが入力した量に応じて伸縮します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.