2014-12-31 7 views
22

Ich habe eine Aktivität mit einem Editiertext. Wenn die Aktivität kommt, fokussiere ich immer den Editiertext. ich machte das Softkeyboard immer sichtbar durchVerhindern Softkeyboard entlassen auf der Androide Zurück-Taste drücken

geben
android:windowSoftInputMode="stateAlwaysVisible" 

im Manifest. Ich mache die Funktionalität auf der Done-Taste drücken der Softkeyboard. Eigentlich ist mein Bedürfnis, dass das Softkeyboard immer angezeigt werden sollte, wenn der Benutzer diese Aktivität ausführt. jetzt deaktiviert ich die Zurück-Taste drücken, durch Überschreiben und nichts tun.

@Override 
public void onBackPressed() { 
    // Do nothing 
} 

aber Softkeyboard wird auf der Rückseite der Presse gelöscht. wie man das los wird. Ich hatte dies Prevent soft keyboard from being dismissed versucht, aber immer noch auf der Rückseite drücken Sie die Tastatur entlässt. Aber es kommt zurück durch erneutes Drücken der Zurück-Taste, Mein Bedarf ist Backpress sollte nicht die Softkeyboard entlassen. Jede Hilfe wird geschätzt.

+1

@HareshChhela die Frage vollständig lesen –

+2

meine Absicht ist nicht zu schließen/verstecken Sie die Softkeyboard. Um das Schließen der Tastatur auf der Rückseite zu verhindern drücken Sie –

+0

Dies ist keine doppelte Frage. Warum liest ihr die Frage nicht sorgfältig und markiert sie einfach als dupliziert? –

Antwort

13

eine benutzerdefinierte EditText erstellen wie mit einer Schnittstelle folgen:

public class CustomEditText extends EditText { 


    public void setHandleDismissingKeyboard(
     handleDismissingKeyboard handleDismissingKeyboard) { 
      this.handleDismissingKeyboard = handleDismissingKeyboard; 
    } 

    private handleDismissingKeyboard handleDismissingKeyboard; 

    public interface handleDismissingKeyboard { 
     public void dismissKeyboard(); 
    } 

    @SuppressLint("NewApi") 
    public CustomEditText(Context context, AttributeSet attrs, 
          int defStyleAttr, int defStyleRes) { 
     super(context, attrs, defStyleAttr, defStyleRes); 
     // TODO Auto-generated constructor stub 
    } 

    public CustomEditText(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
    } 

    public CustomEditText(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 

    public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     // TODO Auto-generated constructor stub 
    } 


    @Override 
    public boolean onKeyPreIme(int keyCode, KeyEvent event) { 
     if (event.getKeyCode() == KeyEvent.KEYCODE_BACK 
       && event.getAction() == KeyEvent.ACTION_UP) { 
      handleDismissingKeyboard.dismissKeyboard(); 
      return true; 
     } 
     return super.dispatchKeyEvent(event); 
    } 

dann in Ihrer Aktivität erstellen Sie Ihre CustomEditText initialisieren und zu verwenden:

customEditText.setHandleDismissingKeyboard(this); 

dann implementieren Klasse und überschreiben Methode und setzen Sie den Code in dass

für mehr Informationen über meine Antwort alles, was Sie brauchen, ist onKeyPreIme, können Sie das in Ihrer EditText-Klasse überschreiben (wie ich Post für Sie), um alle Schlüssel auf, wie zurück Schlüssel oder andere Tastaturtaste, Ich habe eine innere Schnittstelle in benutzerdefinierten Klasse, um Rückruf von dieser Klasse zu jeder Aktivität oder Klasse, die Sie wollen, können Sie mit tun Statische Methode auch, und wie Sie verhindern wollen, Tastatur zu entlassen, können Sie einfach true in diesem zurückgeben.

für CustomEditText verwenden Sie xml oder in Java verwenden können, definieren, dass und initialisieren, dass wie andere Widget (Button, Textview, ...), und andere nur Sie dies in Ihrem xml definieren müssen, wie:

<yourPackage.CustomEditText ..... /> 
+1

Diese Antwort scheint aufgebläht zu sein - on 'OnKeyPreIme()' könnte besser als die Hauptantwort erklärt werden, und die zusätzliche Klasse wird als ein Beispiel dafür gegeben, wie sie benutzt werden könnte. – ataulm

+0

@ataulm Ich erkläre mehr, aber ich glaube nicht, dass mehr erklärt werden muss, irgendwie danke, dass Sie mich und Ihren Vorschlag benachrichtigt haben. ich hoffe, dass das genug ist, weil mein Englisch nicht gut ist, kann ich mehr als das nicht erklären :) –

+0

@shayanpourvatan Thakz. es funktionierte –

Verwandte Themen