Android में EditText दृश्य में मल्टी-लाइन की अनुमति दें?


जवाबों:


1175

डिफ़ॉल्ट रूप EditTextसे एंड्रॉइड के सभी विजेट बहु-पंक्तिबद्ध हैं।

यहाँ कुछ नमूना कोड है:

<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
वहाँ एक तरीका है इनपुट टाइप करने के लिए textMultiLine और imeOptions कार्रवाई के लिए सेट? जब मैं inputMultiLine और कार्रवाई के लिए imeOptions पर इनपुट सेट करता हूं, तो भेजने के बजाय S4 कीबोर्ड पर एक Enter कुंजी देखता हूं।
user484691

1
"TextMultiLine और imeOptions" के लिए देखें stackoverflow.com/questions/5014219/…
TOMKA

2
ध्यान देने वाली एक बात, inputTypeकम से कम linesऔर minLinesविशेषताओं को नकारते हुए । मेरे पास inputType="phone"और रेखाओं का कोई प्रभाव नहीं था
ono

2
इसका उपयोग न करें। एक कारण IndexOutOfBoundsExceptionजैसे ही आप की वजह से कुछ लिखते हीandroid:inputType="textMultiLine"
Chisko

अगर AppCompactTextView का उपयोग करने के लिए इस लाइन की आवश्यकता है तो android: inputType = "textMultiLine"
sourav pandit

260

आपको इसका उपयोग करना बेहतर लग सकता है:

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

इसका कारण यह है कि android:singleLineपदावनत किया जाता है।


शार्ल्डस उत्तर को निश्चित रूप से आधुनिक एपिस पर काम करना चाहिए। चूँकि उन्होंने singleLineअपने उत्तर के लंबे समय ( हटाए गए समय) को हटा दिया था। सवाल के बारे में ही, यह उनके जवाब का सबसे महत्वपूर्ण हिस्सा है।
नोज़ोस

इसका उपयोग न करें। एक कारण IndexOutOfBoundsExceptionआप कुछ लिखते हैं जैसे ही। मल्टीलाइन अब डिफ़ॉल्ट है।
चिस्को

@ यह एक XML विशेषता IndexOutOfBoundsException का कारण नहीं होगा। मुझे याद नहीं है कि कब डिफ़ॉल्ट इनपुट टाइप बदल गया (क्या यह भी?), लेकिन यह संभव है कि बैकवर्ड संगतता कारणों के लिए इसे रखा जाए।
नॉसोस

1
@Knossos अच्छी तरह से, के रूप में यह तुम्हारे लिए अजीब है यह मेरे लिए है। मैंने शाब्दिक रूप से कोड को कॉपी-पेस्ट किया और हर बार कई मापदंडों के हर संभव संयोजन के साथ क्रैश किया जब तक कि मैंने उसे हटा नहीं दिया। जाओ पता लगाओ।
चिस्को

42

यह मेरे लिए काम करता है, वास्तव में ये 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"/>

और अपने जावा क्लास पर क्लिक एडिटर को इस एडिट टेक्स्ट को निम्न प्रकार से बनाएं, मैं आपके अनुसार, मेरा नाम जोड़ दूंगा।

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

        });

यह मेरे लिए ठीक काम करता है


धन्यवाद! इस तरह मैंने एक स्क्रॉल पाठ को स्क्रॉल किए गए दृश्य के भीतर संपादित किया।
एस्क्रास लोपेज़


5

ये सभी अच्छे हैं, लेकिन ऊपरी स्तर के स्क्रॉल दृश्य के अंदर आपके एडिटेक्स होने की स्थिति में काम नहीं करेंगे :) शायद सबसे आम उदाहरण "सेटिंग" दृश्य है जिसमें इतने आइटम हैं कि वे दृश्य क्षेत्र से परे जाते हैं। इस स्थिति में आपने उन सभी को स्क्रॉल दृश्य में डाल दिया है, जिससे सेटिंग स्क्रॉल हो सके। ऐसी स्थिति में जब आपको अपनी सेटिंग में मल्टीलाइन स्क्रॉलेबल एडिट टेक्स्ट की आवश्यकता होती है, तो उसका स्क्रॉल काम नहीं करेगा।


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"

यह कोड लाइन मेरे लिए काम करती है। इस कोड को आप अपने xml फ़ाइल में edittext जोड़ें।


3

android:inputType="textMultiLine" संबंधित क्षेत्र में XML फ़ाइल में इसे जोड़ें ।


1

मैंने इसे http://www.pcsalt.com/android/edittext-with-single-line-line-wrapping-and-done-action-in-android/ से सीखा है , हालाँकि मुझे खुद वेबसाइट पसंद नहीं है। यदि आप बहुस्तरीय BUT पोस्ट बटन के रूप में एंटर बटन को बनाए रखना चाहते हैं, तो लिस्टव्यू की "क्षैतिज स्क्रॉलिंग" को गलत पर सेट करें।

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

android:minHeightसाथ में उपयोग करने के लिए एक और साफ बात है android:layout_height="wrap_content"। इस तरह से आप जब यह खाली होते हैं, तब संपादन का आकार निर्धारित कर सकते हैं, और जब उपयोगकर्ता इनपुट को भरता है, तो यह उपयोगकर्ता के इनपुट के अनुसार कई लाइनों सहित खींचता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.