私のアプリの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);
}
これをAndroidManifest.xmlに追加します:
Android:windowSoftInputMode="stateHidden|adjustResize"
完璧に機能します。 :)
アクティビティのonCreate()メソッドでこれを使用できます
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
またはこのコードをAndroidManifest.xmlのアクティビティタグに貼り付けます
Android:windowSoftInputMode="stateVisible"
アクティビティタグの下のAndroid Manifest.xmlに1行のコードを追加できます。
<activity
Android:name="com.sams.MainActivity"
Android:windowSoftInputMode="stateVisible" >
</activity>
これはあなたを助けるかもしれません。
これをXMLの親レイアウトに追加します。
Android:focusable="true"
Android:focusableInTouchMode="true"
これにより、アクティビティの開始時にフォーカスがeditTextにないことが保証されます。
あなたはプログラムのようにそれを行うことができます
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
またはAndroid:windowSoftInputMode="stateHidden"
内の<activity tag
にAndroidManifest.xml
を設定します
Androidのそのバージョンでは、ビューが拡大されると、フォーカスはデフォルトで最初のフォーカス可能なコントロールに設定されます-物理的なキーボードがない場合、画面上のキーボードがポップアップします。
これを修正するには、明示的に別の場所にフォーカスを設定します。 EditText以外にフォーカスが設定されている場合、スクリーンキーボードは表示されません。
エミュレータでAndroid 1.5を実行して、これをテストしましたか?
InputMethodManager imm = (InputMethodManager)GetSystemService(Context.InputMethodService);
imm.ShowSoftInput(_enterPin.FindFocus(), 0);
*これはAndroid.xamarinとFindFocus()用です-上記のコードの前に_enterPin.RequestFocus()があるので、現在フォーカスがあるこのビューをルートとする階層内のビューを検索し、_enterPin EditTextのキーボードを表示します*
インポートが一番上にある場所にこれを含めます。
import Android.view.WindowManager;
OnCreateパーツに次のコードを追加します。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}