Android中使用ExpandableListView時與軟鍵盤發生衝突

參考網址:https://blog.csdn.net/u012587005/article/details/78616951

在使用ExpandableListView二級列表時,如果界面中使用到了軟鍵盤或下個界面使用了軟鍵盤沒有關閉,再回到二級列表界面應用會崩潰;debug會發現再回到二級列表時列表自己刷新了,通過參考到的文章瞭解到是因爲由於軟鍵盤沒有關閉,導致列表的高度進行了重繪而發生的錯誤

解決辦法:

1.如果是在二級列表界面中使用到了軟鍵盤則需要使用此方法:把ExpandableListView的高度設爲固定值

避免輸入法覆蓋界面輸入框的方式有以下三種:

方法一:在你的activity中的oncreate中setContentView之前寫上這個代碼getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

方法二:在項目的AndroidManifest.xml文件中界面對應的<activity>里加入android:windowSoftInputMode="stateVisible|adjustResize",這樣會讓屏幕整體上移。如果加上的是
android:windowSoftInputMode="adjustPan"這樣鍵盤就會覆蓋屏幕。

方法三:把頂級的layout替換成ScrollView,或者說在頂級的Layout上面再加一層ScrollView的封裝。這樣就會把軟鍵盤和輸入框一起滾動了,軟鍵盤會一直處於底部。

2.如果是二級界面(下個界面)中使用了軟鍵盤但沒有關閉:在二級界面關閉之前先隱藏掉軟鍵盤

//隱藏軟鍵盤
public static void hideInput(Activity context) {
        InputMethodManager imm = (InputMethodManager) context.getSystemService(context.INPUT_METHOD_SERVICE);
        View v = context.getWindow().peekDecorView();
        if (null != v) {
            imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章