Ich habe eine EditText
und Schaltfläche am unteren Rand der Eltern ausgerichtet.
Wenn ich Text eingebe und die Taste zum Speichern von Daten drücke, verschwindet die virtuelle Tastatur nicht.
Kann mir jemand zeigen, wie man die Tastatur versteckt?
android
android-edittext
UMAR-MOBITSOLUTIONS
quelle
quelle
Antworten:
Das sollte funktionieren.
InputMethodManager inputManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
Stellen Sie einfach sicher, dass this.getCurrentFocus () nicht null zurückgibt, was der Fall wäre, wenn nichts den Fokus hat.
quelle
Möglicherweise möchten Sie auch die imeOptions im EditText definieren. Auf diese Weise verschwindet die Tastatur, sobald Sie auf Fertig drücken:
<EditText android:id="@+id/editText1" android:inputType="text" android:imeOptions="actionDone"/>
quelle
onEditorAction([...])
. Durch die Rückkehrtrue
wird verhindert, dass sich die Tastatur korrekt versteckt.android:singleLine="true"
.android:singleLine="true"
es ist veraltet und es funktioniert nicht mitmaxLines=1
. Irgendwelche Ideen?singleLine
wurde ersetzt durchmaxLines=1
. Sollte wie vorgesehen funktionieren. Erstellen Sie eine separate Frage, wenn dies nicht der Fall ist.mEtNumber.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_DONE) { // do something, e.g. set your TextView here via .setText() InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0); return true; } return false; } });
und in xml
android:imeOptions="actionDone"
quelle
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
quelle
Ich habe niemanden mit dieser Methode gesehen:
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean focused) { InputMethodManager keyboard = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); if (focused) keyboard.showSoftInput(editText, 0); else keyboard.hideSoftInputFromWindow(editText.getWindowToken(), 0); } });
Und dann fordern Sie einfach den Fokus auf den editText an:
editText.requestFocus();
quelle
Die im EditText-Aktionslistener enthaltene Lösung:
public void onCreate(Bundle savedInstanceState) { ... ... edittext = (EditText) findViewById(R.id.EditText01); edittext.setOnEditorActionListener(new OnEditorActionListener() { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); in.hideSoftInputFromWindow(edittext.getApplicationWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); } return false; } }); ... ... }
quelle
Ich habe dies gefunden, weil mein EditText bei der Eingabe nicht automatisch entlassen wurde.
Dies war mein ursprünglicher Code.
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if ( (actionId == EditorInfo.IME_ACTION_DONE) || ((event.getKeyCode() == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN ))) { // Do stuff when user presses enter return true; } return false; } });
Ich habe es gelöst, indem ich die Linie entfernt habe
return true;
nachdem Sie Dinge getan haben, wenn der Benutzer die Eingabetaste drückt.
Hoffe das hilft jemandem.
quelle
Schreiben Sie einfach diese beiden Codezeilen auf, in denen die Eingabeoption funktioniert.
InputMethodManager inputManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
quelle
Ich habe in den letzten Tagen damit zu kämpfen und eine Lösung gefunden, die wirklich gut funktioniert. Die Softtastatur wird ausgeblendet, wenn eine Berührung außerhalb des EditText ausgeführt wird.
Hier geposteter Code: Standardtastatur beim Klicken in Android ausblenden
quelle
Oben sehen Sie eine markierte Antwort. Aber ich habe es benutzt
getDialog().getCurrentFocus()
und gut gearbeitet. Ich"this"
poste diese Antwort, weil ich meinen oncreatedialog nicht eingeben kann.Das ist also meine Antwort. Wenn Sie eine markierte Antwort versucht haben und nicht funktioniert haben, können Sie dies einfach versuchen:
InputMethodManager inputManager = (InputMethodManager) getActivity().getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(getDialog().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
quelle
Sie können auf einfache Weise eine Singleton-Klasse für den Aufruf erstellen:
public class KeyboardUtils { private static KeyboardUtils instance; private InputMethodManager inputMethodManager; private KeyboardUtils() { } public static KeyboardUtils getInstance() { if (instance == null) instance = new KeyboardUtils(); return instance; } private InputMethodManager getInputMethodManager() { if (inputMethodManager == null) inputMethodManager = (InputMethodManager) Application.getInstance().getSystemService(Activity.INPUT_METHOD_SERVICE); return inputMethodManager; } @SuppressWarnings("ConstantConditions") public void hide(final Activity activity) { new Handler().post(new Runnable() { @Override public void run() { try { getInputMethodManager().hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); } catch (NullPointerException e) { e.printStackTrace(); } } }); } }
Also, nachdem kann in der Aktivität wie das nächste Formular aufgerufen werden:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity); KeyboardUtils.getInstance().hide(this); } }
quelle
Ich benutze diese Methode, um die Tastatur aus dem Bearbeitungstext zu entfernen:
public static void hideKeyboard(Activity activity, IBinder binder) { if (activity != null) { InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); if (binder != null && inputManager != null) { inputManager.hideSoftInputFromWindow(binder, 0);//HIDE_NOT_ALWAYS inputManager.showSoftInputFromInputMethod(binder, 0); } } }
Und diese Methode zum Entfernen der Tastatur aus der Aktivität (funktioniert in einigen Fällen nicht - wenn beispielsweise edittext, an die die Tastatur gebunden ist, den Fokus verliert, funktioniert sie nicht. In anderen Situationen funktioniert sie jedoch hervorragend, und Sie haben sie nicht sich um ein Element zu kümmern, das die Tastatur hält)
public static void hideKeyboard(Activity activity) { if (activity != null) { InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); if (activity.getCurrentFocus() != null && inputManager != null) { inputManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); inputManager.showSoftInputFromInputMethod(activity.getCurrentFocus().getWindowToken(), 0); } } }
quelle
int klavStat = 1; // for keyboard soft/hide button int inType; // to remeber your default keybort Type
editor - ist das EditText-Feld
/// metod for onclick button /// public void keyboard(View view) { if (klavStat == 1) { klavStat = 0; inType = editor.getInputType(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); editor.setInputType(InputType.TYPE_NULL); editor.setTextIsSelectable(true); } else { klavStat = 1; InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0); editor.setInputType(inType); } }
Wenn Sie ein anderes EditText-Feld haben, müssen Sie auf Fokusänderungen achten
quelle
In meinem Fall habe ich, um die Tastatur beim Drücken der "Senden-Taste" auszublenden, die akzeptierte Antwort verwendet, aber den Kontext in getApplication geändert und getWindow () hinzugefügt.
InputMethodManager inputManager = (InputMethodManager) getApplication().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(getWindow().getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
quelle
editText.setInputType(InputType.TYPE_NULL);
quelle