我已经尝试this solution,但onGlobalLayout()
永远不会被调用。
是的,我已经在清单中设置了android:windowSoftInputMode="adjustResize"
。
也许是因为我使用DrawerLayout
作为我的活动根布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- The main content view -->
<LinearLayout
android:id="@+id/main_fragment_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />
<!-- The navigation drawer -->
<LinearLayout
android:id="@+id/user_fragment_layout"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="end"
android:orientation="vertical" >
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
我在activity_drawer_layout
中测试了main_fragment_layout
和findViewById()
但未成功; onGlobalLayout()
永远不会被调用。请帮我。提前谢谢。
答案 0 :(得分:2)
我不确定您要通过识别键盘是否可见来实现目标,但如果您只想在导航抽屉打开时隐藏键盘,我建议您使用以下代码
private void hideKeyboard() {
// Check if no view has focus:
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
你也看了How to check visibility of software keyboard in Android?