私のアプリの1つに「開始画面」(基本的にはメニュー)があり、EditText
その後にいくつかButton
のが続きます。問題は、私のユーザーの何人かが、アプリを開くと、に触れなくても自動的にスクリーンキーボードをポップアップすると報告していることですEditText
。私の知る限り、これらのユーザーはすべてHTC Heroを使用しています。
これは1.5のバグですか?何かできることはありますか?
私のアプリの1つに「開始画面」(基本的にはメニュー)があり、EditText
その後にいくつかButton
のが続きます。問題は、私のユーザーの何人かが、アプリを開くと、に触れなくても自動的にスクリーンキーボードをポップアップすると報告していることですEditText
。私の知る限り、これらのユーザーはすべてHTC Heroを使用しています。
これは1.5のバグですか?何かできることはありますか?
回答:
アクティビティのonCreateメソッドで次のコード行を使用して、ユーザーがEditTextをクリックしたときにのみキーボードがポップアップすることを確認できます。
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden"
>
これはAndroid 3.0、3.1、3.2、4.0で機能します-コンパイルに使用されるエディター(Eclipse 3.7)
アプリケーションのマニフェストXMLファイルに「windowSoftInputMode = "stateHidden"」を配置して、ソフトウェアキーボードを非表示のままにしたい各アクティビティを実行します。これは、キーボードが自動的に起動せず、ユーザーがクリックする必要があることを意味します。表示するテキストフィールド。約1時間検索して、うまくいったことを共有したいと思いました。
このコードはすべてのAndroidバージョンで機能します。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//Automatic popping up keyboard on start Activity
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
or
//avoid automatically appear android keyboard when activity start
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
そのバージョンのAndroidでは、ビューがインフレートされると、デフォルトでフォーカスが最初のフォーカス可能なコントロールに設定されます。物理キーボードがない場合は、スクリーンキーボードがポップアップします。
これを修正するには、フォーカスを別の場所に明示的に設定します。フォーカスがEditText以外に設定されている場合、画面キーボードは表示されません。
エミュレーターでAndroid 1.5を実行してこれをテストしてみましたか?
あなたはプログラムでそれを行うことができます
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
またはセットandroid:windowSoftInputMode="stateHidden"
で<activity tag
内部AndroidManifest.xml