2012-11-02 6 views
5

Ich erstelle eine App, die Chat-Funktionalität darin bietet. Es gibt einen EditText auf dem Bildschirm, auf dem ich OnKeyListener eingestellt habe. Wenn der Benutzer nach dem Eingeben der Nachricht die Eingabetaste drückt, wird die Nachricht auf dem Bildschirm angezeigt. Es funktioniert gut. Hier ist meine EditText:Wie absichtlich zu einer neuen Zeile in einem EditText gehen?

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

Das Problem ist, wenn Benutzer neue Linie gehen will, bevor die EditText den Text wickelt und geht in neue Zeile. Wenn der Benutzer nun zu einer neuen Zeile wechseln möchte und die Eingabetaste drückt, wird die Nachricht gesendet.

In einigen Chat-Nachrichten habe ich gesehen, dass das Drücken von "Shift + Enter" (oder eine andere Tastenkombination) gleichzeitig den Benutzer zu einer neuen Zeile führt. Wie können wir Tasten "Shift + Enter" (oder eine andere Tastenkombination) gleichzeitig in Android drücken? Gibt es eine Möglichkeit, diese Funktionalität in Android zu erreichen?

Antwort

4

In Ihrer OnKeyListener Methode verwenden überprüfen Enter und Shift Enter und getrennte Funktionalität von Send und New Line jeweils bieten.

+1

gehen Wie werde ich für Shift überprüfen und Enter-Taste klickte simultan ? Irgendein Codeausschnitt? –

+0

'if ((event.getAction() == KeyEvent.ACTION_DOWN) \t \t \t && (Schlüsselcode == SchlüsselEreignis.KEYCODE_ENTER)) { \t \t \t // Ihre Send-Funktionalität \t \t \t return true; } else if ((event.getAction() == KeyEvent.ACTION_DOWN) \t \t \t && (keyCode == KeyEvent.KEYCODE_ENTER \t \t \t \t \t && keyCode == (KEYCODE_SHIFT_LEFT || KEYCODE_SHIFT_RIGHT))) { ///Ihre neue Leitungsfunktionalität return true; } '
Code ist nicht kompiliert, kann Syntaxfehler enthalten, für die Funktionalität dargestellt. Anstelle von Shift können Sie auch LongPress für die Eingabe verwenden, um die "neue Zeile" -Funktionalität zu erreichen. – Chand51

+0

Für KeyEvent und langes Drücken Ereignis, siehe http://developer.android.com/reference/android/view/KeyEvent.html – Chand51

0

Hier können Sie die 'OnKeyListener'-Methode einstellen. Für jede Taste können Sie die Funktionalität bieten wie folgt ..

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

Versuchen Sie einfach den Code für Verschiebung suchen und

Es kann Works eingeben. Viel Spaß.

+2

Mann, ich habe keinen Spaß !! Das weiß ich schon. Bitte lesen Sie die Frage sorgfältig. –

+0

@YogeshSomani Sie möchten, dass, wenn jemand drücken Sie mit Shift-Taste eingeben, dann sollte die Newline öffnen. habe ich recht? –

+0

ja Bruder. Ich will genau das. –

1

Bei der Suche Ihrer Lösung habe ich this Link. Versuchen Sie es, es kann Ihr Problem lösen.

Und wenn eine andere beste Weise, die Sie haben, bitte posten, das ist sehr nützlich und gute Frage ..,.

Danke ..,.

EDIT ......................

Siehe auch this Link für besser, die benutzerdefinierten Verknüpfungen mit ..,.

5

Probieren Sie es einfach aus ... Es kann helfen.

die Eingabe von EditText Set als

youredittext.setInputType(EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE); 

Dann fügen Sie:

android:singleLine="false" 

oder

youredittext.setSingleLine(false); 

Auch Click Here

+0

Es hat geholfen. Vielen Dank. – dazed

Verwandte Themen