Android EditTextフォーカスを取得した後、カーソルだけを表示してソフトキーボードをイジェクトしない

2850 ワード

Android EditTextフォーカスを取得した後、カーソルだけを表示してソフトキーボードをイジェクトしない
参考ブログリンク
直接結論を述べる.
プロジェクトの最小バージョンが21以上であれば
//    EditText    ,   false  
binding.newPesticideEditCodeEt.setShowSoftInputOnFocus(false);

プロジェクトの最小バージョンが21未満の場合
    public void disableShowInput(EditText et) {
        Class cls = EditText.class;
        Method method;
        try {
            method = cls.getMethod("setShowSoftInputOnFocus", boolean.class);
            method.setAccessible(true);
            method.invoke(et, false);
        } catch (Exception e) {//TODO: handle exception
        }
   }

ブログのコード分析を参照
    public void disableShowInput(EditText et) {
        Class cls = EditText.class;
        Method method;
        try {
            //setShowSoftInputOnFocus   EditText TextView     
            //       EditText            
            method = cls.getMethod("setShowSoftInputOnFocus", boolean.class);
            method.setAccessible(true);
            method.invoke(et, false);
        } catch (Exception e) {//TODO: handle exception
        }
        try {
            //      ,      ,  EditText ,TextView ,View  ,
            //    setSoftInputShownOnFocus    ,     method   
            method = cls.getMethod("setSoftInputShownOnFocus", boolean.class);
            method.setAccessible(true);
            method.invoke(et, false);
        } catch (Exception e) {//TODO: handle exception
        }
    }

Activityの起動時にソフトキーボードをイジェクトしない設定
  • このActivityは、Manifestsファイルで次のように設定されています.
  • android:windowSoftInputMode="stateAlwaysHidden"