EditText獲取焦點requestFocus失敗問題

最近在寫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);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容