android中showSoftInput不起作用 与 toggleSoftInput
有些人會在activity或者fragment的onCreate(或者onCreateView)函數(shù)中就去調(diào)用上面兩行代碼,發(fā)現(xiàn)并不起作用,這是因?yàn)樵趏nCreate中或者其他聲明周期函數(shù)(onStart,onResume等)中,該EditText還未被繪制出來,InputMethodManager還不能獲取到該控件的焦點(diǎn),所以鍵盤并不會顯示,而且manager.showSoftInput函數(shù)返回false,告訴你鍵盤并未顯示。所以只有當(dāng)EditText完全被繪制出來了,才可以去獲取焦點(diǎn)。
解決辦法
edittext.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { ?
? ? ? @Override ?
? ? ? public void onGlobalLayout() { ?
? ? ? ? ? InputMethodManager manager = (InputMethodManager) getActivity().getSystemService(getActivity().INPUT_METHOD_SERVICE); ?
? ? ? ? ? manager.showSoftInput(edittext, 0); ?
? ? ? } ?
}); ?
對于toggleSoftInput 方法的區(qū)別
InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); showsoftinput 需要指定text,那么需要text繪制完成才會真正的將焦點(diǎn)給text并彈出軟鍵盤,但是方法緊接著edittext創(chuàng)建執(zhí)行,那么此時(shí)未發(fā)現(xiàn)繪制好的text,那么返回FALSE。也就不彈出軟鍵盤。但是 togglesoftinput 直接彈出軟鍵盤,不指定焦點(diǎn)給text。
總結(jié)
以上是生活随笔為你收集整理的android中showSoftInput不起作用 与 toggleSoftInput的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java虚拟机简单介绍
- 下一篇: 中国移动与高通联合 vivo、小米等完成