AndroidにおけるEditText隠し/自動ポップアップ入力方式の問題


一部のアプリケーションでは、EditTextフォーカス時に自動的に入力法をポップアップしたり、入力法を隠したりする必要があります.入力法ポップアップについては、一般的には問題はありません.しかし、入力方式が自動的にポップアップされていない場合があります.例えば、ポップアップされたダイアログボックスにedittextがあり、よく使われる使い方を紹介します.
一、AndroidManifestファイルの構成
一般的な方法では、edittextのあるactivityにandroid:windowSoftInputModeを配置し、入力方式に自動的にサイズを調整させる.例えばログインインタフェースには、2つのEditTextとボタンがあり、ユーザーがユーザー名を入力すると、自動的に入力法をポップアップし、レイアウトを上にし、adjustResizeは入力法がedittext入力ボックスを隠さないようにすることができます.
 <activity
    android:name="com.oair.oair_client.LoginActivity"
    android:label="@string/title_activity_login"
    android:launchMode="singleTask"
    android:screenOrientation="portrait"
    android:configChanges="keyboardHidden|orientation"
    android:windowSoftInputMode="adjustResize"/>

三、activity起動時の入力方式のデフォルトは開かない
Activityが起動するとeditextがフォーカスせず、入力方式はポップアップされず、入力するときにクリックすると入力方式がポップアップします.onCreateメソッドで、次のように設定することもできます.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

三、ダイアログにEditTextがあり、入力方式を強制表示する
ポップアップされたダイアログボックスにはedittextがあり、showメソッドは入力法の現実と衝突する可能性があり、自動的にポップアップされていないので、このようにすることができます.
//       , handler       
dialog_rename.show();
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
               showInputMethod();
            }
        },100);
    }

    private void showInputMethod() {
        //      
        InputMethodManager inputManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
        //    Android     
        // inputManager.hideSoftInputFromWindow(edit.getWindowToken(),0);
    }

四、入力法に関する方法
/**
 *     
 * @param context
 * @param view
 */
public static void showInputMethod(Context context, View view) {
        InputMethodManager im = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        im.showSoftInput(view, 0);
}
 //      
 public static void HideKeyboard(View v){
          InputMethodManager imm = ( InputMethodManager) v.getContext( ).getSystemService(Context.INPUT_METHOD_SERVICE);     
        if (imm.isActive()) {     
            imm.hideSoftInputFromWindow( v.getApplicationWindowToken() , 0 );       
        }    
}

まとめ
応用するのは比較的簡単で,もう余計なことは言わない.また、EditTextを構成し、フォーカスを取得するかどうかを設定し、フォーカスをクリアする:edit.clearFocus(); EditTextソフトウェアキーボード:edit.setInputType(InputType.TYPE_NULL);をポップアップしません.Activityデフォルトポップアップ入力法:android:windowSoftInputMode="stateVisible|adjustPan"コミュニケーション、杜乾、Dusan、Q 291902259を歓迎します.