最近在寫IM程序,針對聊天信息,長按實現(xiàn)回復(fù)功能。遇到一個問題,長按選擇回復(fù)功能時,需要主動彈出鍵盤。
彈出鍵盤代碼如下:
public void showSoftInput() {
Log.d("BaseSoftInputLayout" , "顯示軟鍵盤");
if(editText == null){
Log.d("BaseSoftInputLayout" ,"editText "+editText);
return;
}
editText.requestFocus();
((InputMethodManager) getContext()
.getSystemService(Context.INPUT_METHOD_SERVICE))
.showSoftInput(editText, 0);
}
但是總是不能生效。查詢資料后得知,requestFocus這個方法是有延時的,android刷新時按照一定順序,如果界面刷新未完成時,調(diào)用requestFocus是沒有效果的。
網(wǎng)上的通用方法,給editText.requestFocus()設(shè)置延時,測試有效
layChatSoftInput.postDelayed(new Runnable() {
@Override
public void run() {
layChatSoftInput.showSoftInput();
} }, 200);