2013-02-22 46 views
13

मैं कोड द्वारा एक multiline EditText बनाने की कोशिश कर रहा हूं।प्रोग्रामिंग के रूप में एक multiline EditText बनाएँ

EditText txt = new EditText(this);  
lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1.0f); 
txt.setLayoutParams(lp); 
txt.setSingleLine(false); 
txt.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE); 

लेकिन यह अभी भी एक ही कतार में है: यह मैं क्या उपयोग है। कोई मदद?

उत्तर

40

यह

txt.setSingleLine(false); 
txt.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION); 
+2

हां महोदय। आपको यह मिला! यह बहुत अच्छा काम करता है। ग्रेसियस। – Ton

+0

यदि setEms (int) कहा जाता है, तो यह काम नहीं करता है। –

3

अपने कोड में यह शामिल हैं:

txt.setLines(maxlines); 

Maxlines लाइनों आप अपने EditText में अनुमति देना चाहते हैं की अधिकतम संख्या हो जाएगा।

0

प्रयास करें इस

txt.setLines(number of lines); 
20

तुम भी इसका उपयोग कर सकते करना चाहिए:

txt.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_MULTI_LINE); 
1

संयोजन है कि अंत में मेरे लिए काम किया था:

answerView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE); 
answerView.setSingleLine(false); 

कम से कम आंशिक रूप से मैं कई अलग-अलग विकल्पों को कॉन्फ़िगर करने के लिए setInputType का उपयोग कर रहा था, इसलिए यह कुछ अन्य संभावनाओं की तुलना में अधिक समझ में आया।

10

सब से ऊपर जवाब का मेल इसलिए यहाँ सही जवाब यह है:

texInput.setSingleLine(false); 
texInput.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION); 
texInput.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE); 
texInput.setLines(5); 
texInput.setMaxLines(10); 
texInput.setVerticalScrollBarEnabled(true); 
texInput.setMovementMethod(ScrollingMovementMethod.getInstance()); 
texInput.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET); 
+0

धन्यवाद, एंड्रॉइड एपीआई इस संबंध में भयानक है। स्क्रॉलबार मेरे लिए दृश्यमान नहीं हैं लेकिन इससे कोई फर्क नहीं पड़ता क्योंकि कम से कम टेक्स्ट को बहु-पंक्ति फैशन में इनपुट करने में सक्षम किया जाता है (पहले कोई एंटर बटन नहीं था, या एक नई लाइन के बजाय एंटर बटन डालने वाली जगह नहीं थी - वह कितना मंद है)। –

+0

धन्यवाद, लेकिन अब स्क्रॉलबार दिखाई नहीं दे रहे हैं, और पाठ किसी कारण से चयन योग्य नहीं है। –

+1

यहां लापता एकमात्र चीज है: textInput..setGravity (Gravity.TOP | Gravity.LEFT); –

0

मेरे फोन पर, बदलते imeOptions और inputType कुछ नहीं करता है; आंदोलन सेटिंग विधि और/या scrollBarStyle घटक को इतनी बुरी तरह खराब कर देगा ताकि उपयोगकर्ता कोई भी टेक्स्ट चुनने में असमर्थ रहे; isVerticalScrollBarEnabled और isHorizontalScrollBarEnabled कुछ भी नहीं करता है; सबसे अच्छा मैं कर सकता का उपयोग करने के

txt.setSingleLine(false); 

(txt.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION); अनावश्यक प्रतीत हो रहा है) लेकिन यह है कि भगवान-लानत EditText में किसी भी स्क्रॉलबार प्रदर्शित नहीं होगा है। आखिर में मैंने छोड़ दिया और जब भी मुझे एक बहु-रेखा संपादन टेक्स्ट की आवश्यकता होती है तो मैं एक लेआउट स्निपेट फुला रहा हूं। यहाँ लेआउट है:

<?xml version="1.0" encoding="utf-8"?> 
<EditText xmlns:android="http://schemas.android.com/apk/res/android" 
android:inputType="textMultiLine" 
android:lines="4" 
android:minLines="4" 
android:gravity="top|start" 
android:maxLines="4" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:scrollbars="vertical" 
/> 

और यहाँ Anko टुकड़ा है:

fun ViewManager.multiLineEditText(@StyleRes theme: Int = 0, init: EditText.() -> Unit): EditText = ankoView(
    { ctx -> ctx.layoutInflater.inflate(R.layout.util_multilineedittext, [email protected] as ViewGroup, false) as EditText }, theme, init) 

विकास Android पर इतनी मेहनत बेकार है।