參考網址: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);
}
}