2012-11-02 9 views
5

मैं एक ऐप बना रहा हूं जो इसमें चैट कार्यक्षमता प्रदान करता है। स्क्रीन में एक संपादन टेक्स्ट है, जिस पर मैंने ऑनके लिस्टनर सेट किया है। जब भी संदेश टाइप करने के बाद उपयोगकर्ता "एंटर" कुंजी दबाता है, तो संदेश स्क्रीन पर पोस्ट किया जाता है। यह बढ़िया काम करता है। जब उपयोगकर्ता नई लाइन पर जाने के लिए पहले EditText पाठ लपेटता है और नई लाइन को जाता है चाहता हैएडिटटेक्स्ट में जानबूझकर नई लाइन पर कैसे जाना है?

<EditText android:id="@+id/chatMessageField" 
    android:layout_height="wrap_content" android:layout_width="fill_parent" 
    android:layout_gravity="center_horizontal|center_vertical" 
    android:layout_marginRight="5dip" android:layout_marginLeft="5dip" 
    android:maxLines="2" android:minLines="1" android:scrollbars="vertical" 
    android:hint="@string/chatMessageHintText" android:textColorHint="#3b64a8"> 
</EditText> 

समस्या है: यहाँ मेरी EditText है। अब यदि उपयोगकर्ता नई लाइन पर जाना चाहता है और "एंटर" कुंजी दबाता है, तो संदेश भेजा जाता है।

कुछ चैट मैसेन्जर में, मैंने देखा है कि "Shift + Enter" (या कोई अन्य कुंजी संयोजन) दबाकर उपयोगकर्ता को नई लाइन पर ले जाता है। हम एंड्रॉइड में एक साथ दबाए गए "Shift + Enter" (या कोई अन्य कुंजी-संयोजन) कुंजी का पता कैसे लगा सकते हैं? एंड्रॉइड में इस कार्यक्षमता को हासिल करने का कोई तरीका है?

उत्तर

4

अपने OnKeyListener विधि में, Enter और Shift Enter के लिए जाँच करें और क्रमश: Send और New Line की अलग कार्यक्षमता प्रदान का उपयोग करें।

+1

मैं कैसे शिफ्ट के लिए जाँच करेगा और बटन दर्ज करें simultan क्लिक किया eously? कोई कोड स्निपेट? –

+0

'अगर ((event.getAction() == KeyEvent.ACTION_DOWN) \t \t 0& (keyCode == KeyEvent।KEYCODE_ENTER)) { \t \t \t // आपके संदेश कार्यक्षमता \t \t \t वापसी सच; } else अगर ((event.getAction() == KeyEvent.ACTION_DOWN) \t \t \t && (कीकोड == KeyEvent.KEYCODE_ENTER \t \t \t \t \t && कीकोड == (KEYCODE_SHIFT_LEFT || KEYCODE_SHIFT_RIGHT))) { ///आपकी नई लाइन कार्यक्षमता सत्य वापस आती है; } '
कोड संकलित नहीं है, कार्यक्षमता के लिए प्रस्तुत वाक्यविन्यास त्रुटि हो सकती है। शिफ्ट के बजाय, आप 'नई लाइन' कार्यक्षमता ' – Chand51

+0

कुंजीइवेंट और लंबी प्रेस ईवेंट के लिए' लॉन्गप्रेस फॉर एंटर 'के साथ-साथ लॉन्गप्रेस फॉर एंटर का उपयोग कर सकते हैं, http://developer.android.com/reference/android/view/KeyEvent.html – Chand51

0

यहां आप 'ऑनके लिस्टनर' विधि सेट कर सकते हैं। इस प्रकार प्रत्येक कुंजी के लिए आप कार्यक्षमता प्रदान कर सकते हैं ..

editText.setOnKeyListener(new View.OnKeyListener() { 
public boolean onKey(View v, int keyCode, KeyEvent event) { 
    switch(keyCode) { 
     case KeyEvent.KEYCODE_0: 
      //handle code for pressing 0 
      break; 
     case KeyEvent.KEYCODE_1 
      //handles code for pressing 1 
     default: 
      break; 
    } 
} 
}); 

बस बदलाव के लिए कोड खोज और

यह काम करता है हो सकता है में प्रवेश करने की कोशिश करते हैं। मज़े करो।

+2

देखें दोस्त मैं मजाक नहीं कर रहा हूँ !! मुझे पहले से ही यह पता है। कृपया सावधानी से प्रश्न पढ़ें। –

+0

@ योगेश सोमानी आप चाहते हैं कि अगर कोई शिफ्ट कुंजी के साथ प्रवेश करें तो नई लाइन खोलनी चाहिए। क्या मैं सही हू? –

+0

हाँ भाई। मुझे वही चाहिए। –

1

आपको समाधान खोजने के दौरान मुझे this लिंक मिला। इसे आज़माएं यह आपकी समस्या का समाधान कर सकता है।

और अगर आपको कोई अन्य बेहतरीन तरीका मिल गया तो कृपया पोस्ट करें, यह बहुत उपयोगी और अच्छा सवाल है ..,।

धन्यवाद ..,।

संपादित ......................

इसके अलावा कस्टम शॉर्टकट .., का उपयोग कर बेहतर करने के लिए this लिंक देखें।

5

बस इसके लिए प्रयास करें ... इससे मदद मिल सकती है।

youredittext.setInputType(EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE); 

रूप EditText के इनपुट सेट फिर जोड़ने:

android:singleLine="false" 

या

youredittext.setSingleLine(false); 

भी जाना Click Here

+0

इससे मदद मिली। धन्यवाद। – dazed