Состояние виртуальной клавиатуры - PullRequest
1 голос
/ 30 марта 2012

Есть ли способ узнать, что виртуальная клавиатура скрыта пользователем во время выполнения.Прежде чем пометить меня дублирующим вопросом, сначала поймите мой вопрос, потому что он выглядит как дубликат, и я также нашел много вопросов по смежной теме.Но не нашел никакого ответа.

Моя проблема возникает во время какого-либо события, например, например, изменения ориентации, мне нужно знать, свернул ли пользователь клавиатуру или нет. Поэтому я предпринимаю соответствующие действия.Я старался быть очень конкретным, чтобы задавать вопросы, даже любые объяснения, не стесняйтесь спрашивать.Любая помощь будет оценена. Спасибо заранее My Try

final View activityRootView = findViewById(R.id.ll_main_root);
                activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
                    @Override
                    public void onGlobalLayout() {
                        int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
                        if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
                            Toast.makeText(MainActivity.instance, "KeyBoarad" + value, Toast.LENGTH_LONG).show();
                        }
                     }
                });

Ответы [ 2 ]

1 голос
/ 23 июля 2012

Эй, может быть поздно, но только для запроса и моего предложения. Я столкнулся с той же проблемой несколько. На самом деле, в моем случае при изменении ориентации клавиатура была минимизирована, даже если она была видна до изменения ориентации. Поэтому я использовал android:windowSoftInputMode="stateUnchanged", чтобы моя клавиатура оставалась видимой даже при изменении ориентации.

И может быть еще одна проблема, из-за которой вы хотите изменить видимость, поэтому вы можете использовать toggleSoftInputFromWindow (IBinder windowToken, int showFlags, int hideFlags).

Конкретно

InputMethodManager inputMgr = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); inputMgr.toggleSoftInput(0, 0);

Надеюсь, это поможет.

1 голос
/ 30 марта 2012

Довольно похоже на это: Как записать событие «показать / скрыть виртуальную клавиатуру» в Android?

и вот это: Android EditText, программная клавиатура/ скрыть событие?

Похоже, что вывод НЕТ никакого способа сделать это, некоторые люди используют хаки, когда вы фиксируете размер экрана и используете этот параметр.

...