目前很多的輸入法都有自動(dòng)提示補(bǔ)全功能,在一些應(yīng)用場(chǎng)景里不適用,需要禁用系統(tǒng)輸入法,自定義軟鍵盤,EditText的光標(biāo)問題是比較頭疼的,網(wǎng)上的說法很多,然而大部分都是解決不了問題的。以下是本人做的一個(gè)demo供網(wǎng)友參考。
長寧網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,長寧網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為長寧上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的長寧做網(wǎng)站的公司定做!
直接上代碼:
xml軟鍵盤:
禁用系統(tǒng)輸入法,解決EditText光標(biāo)問題的重要代碼:
public boolean onTouch(View v, MotionEvent event) { //隱藏輸入法,顯示光標(biāo) EditText et=(EditText)v; int inType = et.getInputType(); // back up the input type if (sdkInt>=11) { Classcls=EditText.class; try { Method setShowSoftInputOnFocus=cls.getMethod("setShowSoftInputOnFocus", boolean.class); setShowSoftInputOnFocus.setAccessible(false); setShowSoftInputOnFocus.invoke(et, false); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } }else { et.setInputType(android.text.InputType.TYPE_NULL); // disable soft input et.setInputType(inType); } keyboardUtil=null; keyboardUtil = new KeyboardUtil(act, ctx, et); et.onTouchEvent(event);// call native handler // restore input type keyboardUtil.showKeyboard(); return true; }
其他代碼就不貼了,需要完整demo的請(qǐng)自行下載。