(\ d +) попробуйте это! Я тестировал этот инструмент с помощью x12345 http://www.regular-expressions.info/javascriptexample.html
По этому сообщению и этому сообщению на android-developers не похоже, что возможно сделать то, что вы хотите. Возможно, вам стоит пересмотреть сценарий использования того, что вы делаете. Возможно, вам подойдет один из флагов softInputMode
.
Вот мое решение:
1 / Простой интерфейс
public interface KeyboardVisibilityListener {
void onKeyboardVisibilityChanged(boolean keyboardVisible);
}
2 / Вспомогательный метод (поместите его в нужное место, например, в класс с именем KeyboardUtil
)
public static void setKeyboardVisibilityListener(Activity activity, KeyboardVisibilityListener keyboardVisibilityListener) {
View contentView = activity.findViewById(android.R.id.content);
contentView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
private int mPreviousHeight;
@Override
public void onGlobalLayout() {
int newHeight = contentView.getHeight();
if (mPreviousHeight != 0) {
if (mPreviousHeight > newHeight) {
// Height decreased: keyboard was shown
keyboardVisibilityListener.onKeyboardVisibilityChanged(true);
} else if (mPreviousHeight < newHeight) {
// Height increased: keyboard was hidden
keyboardVisibilityListener.onKeyboardVisibilityChanged(false);
} else {
// No change
}
}
mPreviousHeight = newHeight;
}
});
}
3 / Используйте это упражнение таким образом (хорошее место в onCreate):
KeyboardUtil.setKeyboardVisibilityListener(this, mKeyboardVisibilityListener);
Единственный способ, которым я смог обойти это, это установить андроид моей активности: windowSoftInputMode = "AdjustResize", а затем внедрить пользовательский «вид детектора» в макет для обработки изменения размера контейнера и распространить его как пользовательское событие. (через прослушиватель) для включения / выключения программной клавиатуры.
В следующем посте описан подход к его реализации: EditText не вызывает изменения при нажатии кнопки назад
@ Ответ совета директоров работает нормально, если я уберу следующую строку.
if (mPreviousHeight != 0) {
/* other code is same, because
mPreviousHeight is 0 when it comes first */
}