Ich möchte behandeln "weichen Tastatur" Ereignis in Android zu umgehen, und soweit ich das verstanden habe, ist die einzige Lösung, dies zu tun, EditText
, die ich nach this answer tat .Android Soft Keyboard: "Done" auf "Dismiss"
Hier ist meine Klasse:
public class EditTextCustom extends EditText {
public EditTextCustom(Context context) {
super(context);
}
public EditTextCustom(Context context, AttributeSet attrs) {
super(context, attrs);
}
public EditTextCustom(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(focused, direction, previouslyFocusedRect);
if (listener != null)
listener.onStateChanged(this, true);
}
@Override
public boolean onKeyPreIme(int keyCode, @NonNull KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
Log.d("Info", "Soft keyboard was hidden");
if (listener != null) {
listener.onStateChanged(this, false);
}
}
return super.onKeyPreIme(keyCode, event);
}
KeyboardListener listener;
public void setOnKeyboardListener(KeyboardListener listener) {
this.listener = listener;
}
public interface KeyboardListener {
void onStateChanged(EditTextCustom keyboardEditText, boolean showing);
}
}
ich dieses Ereignis muß (s) (KeyEvent.KEYCODE_BACK
und KeyEvent.ACTION_UP
) als EditorInfo.IME_ACTION_DONE
zu handeln, das heißt, wenn der Benutzer entlässt Soft-Tastatur, ist es von Android interpretiert, wenn sie gedrückt "Done"
und die Änderungen an der EditText
wurden angewendet.
Best Practice, um dies zu implementieren?
Versucht, hat nicht funktioniert – TranslucentCloud
Und soweit ich verstanden habe, macht das Dinge, wenn "D man "wird gedrängt. Und ich brauche eine Aktion, wenn "Dismiss" gedrückt wird. – TranslucentCloud