您好,登錄后才能下訂單哦!
目前很多的輸入法都有自動提示補全功能,在一些應用場景里不適用,需要禁用系統輸入法,自定義軟鍵盤,EditText的光標問題是比較頭疼的,網上的說法很多,然而大部分都是解決不了問題的。以下是本人做的一個demo供網友參考。
直接上代碼:
xml軟鍵盤:
<android.inputmethodservice.KeyboardView android:id="@+id/keyboard_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/white" android:focusable="true" android:focusableInTouchMode="true" android:keyBackground="@drawable/btn_keyboard_key" android:keyTextColor="@color/black" android:visibility="gone" />
禁用系統輸入法,解決EditText光標問題的重要代碼:
public boolean onTouch(View v, MotionEvent event) { //隱藏輸入法,顯示光標 EditText et=(EditText)v; int inType = et.getInputType(); // back up the input type if (sdkInt>=11) { Class<EditText> cls=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的請自行下載。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。