2012-11-02 11 views
5

İçinde sohbet işlevi sağlayan bir uygulama oluşturuyorum. Ekranda OnKeyListener'ı ayarlamış olduğum bir EditText var. Kullanıcı, mesajı yazdıktan sonra "Enter" tuşuna bastığında, mesaj ekranda görüntülenir. İyi çalışıyor. Kullanıcı EditText metni sarar ve yeni satıra geçmeden önce yeni bir satıra gitmek istediğindeBir EditText'te yeni bir çizgiye nasıl bilerek gidilir?

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

sorundur: İşte benim EditText olduğunu. Şimdi, kullanıcı yeni satıra gitmek ve "Enter" tuşuna basmak istiyorsa, mesaj gönderilir. Bazı sohbet habercilerinde, "Shift + Enter" (veya başka bir tuş bileşimi) tuşlarına aynı anda basmanın kullanıcıyı yeni satıra aldığını gördüm. Android'de aynı anda basılan "Shift + Enter" (veya başka bir tuş bileşimi) tuşunu nasıl algılayabiliriz? Android'de bu işlevselliği elde etmek için herhangi bir yolu var mı? senin OnKeyListener yöntemde

cevap

4

, Enter ve Shift Enter kontrol ve sırasıyla Send ve New Line ayrı işlevsellik sağlamak kullanın.

+1

gidip Enter düğmesine:

Ardından eklemek

youredittext.setInputType(EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE); 

olarak EditText girişini Set tıklanan simultan herkesi eşit derecede? Herhangi bir kod snippet'i? –

+0

'if ((event.getAction() == KeyEvent.ACTION_DOWN) \t \t \t && (keyCode == KeyEvent.KEYCODE_ENTER)) { \t \t \t // adresten gönder işlevselliği \t \t \t dönüş true; } başka if ((event.getAction() == KeyEvent.ACTION_DOWN) \t \t \t && (tuş kodu == KeyEvent.KEYCODE_ENTER \t \t \t \t \t && keyCode == (KEYCODE_SHIFT_LEFT || KEYCODE_SHIFT_RIGHT))) { ///Yeni satır işleviniz true; } '
Kod derlenmiyor, sözdizimi hatası içeriyor olabilir, işlevler için sunulmuştur. Shift yerine, 'Yeni satır' işlevselliği ' – Chand51

+0

'a ulaşmak için Enter için LongPress'i kullanabilirsiniz. KeyEvent ve uzun basın etkinliği için http://developer.android.com/reference/android/view/KeyEvent.html – Chand51

0

Burada 'OnKeyListener' yöntemini ayarlayabilirsiniz. Her bir tuşun için,

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

Sadece vardiya kodu aramak ve

O Çalışır may girmeyi deneyin .. işlevsellik sağlayabilir. İyi eğlenceler.

+2

adresine bakın. dostum eğlenmiyorum! Bunu zaten biliyorum. Lütfen soruyu dikkatle okuyun. –

+0

@YogeshSomani Eğer birileri shift tuşuna basarak girerse, o zaman yeni satır açılmalıdır. haklı mıyım –

+0

evet kardeşim. Tam olarak bunu istiyorum. –

1

Size çözüm ararken, this bağlantım var. Deneyin, probleminizi çözebilir.

Ve diğer bazı en iyi yolu lütfen gönderin, bu çok yararlı ve iyi bir soru ..,.

Teşekkürler ..,.

DÜZENLEME ......................

Ayrıca .., özel kısayollarını kullanarak daha iyi this bağlantısına bakın.

5

Sadece bunun için deneyin ... Bu yardımcı olabilir.

android:singleLine="false" 

veya

youredittext.setSingleLine(false); 

Ayrıca ben Shift kontrol edecektir Nasıl Click Here

+0

Bu yardımcı oldu. Teşekkürler. – dazed

İlgili konular