web-dev-qa-db-ja.com

Android画面キーボードの自動ポップアップ

私のアプリの1つに「オープニング画面」(基本的にメニュー)があり、EditTextの後にいくつかのButtonが続きます。問題は、ユーザーの何人かがアプリを開くと、EditTextに触れることなく、画面上のキーボードが自動的にポップアップすることを報告していることです。私が知る限り、これらのユーザーはすべて HTC Hero を使用しています。

これは1.5のバグですか?何かできることはありますか?

137
Jeremy Logan

アクティビティのonCreateメソッドで次のコード行を使用して、ユーザーがEditTextをクリックしたときにのみキーボードがポップアップするようにすることができます。

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
274
Donal Rafferty
<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時間探しました。

84
mourngrym1969

このコードは、すべての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);
 }
6

これをAndroidManifest.xmlに追加します:

Android:windowSoftInputMode="stateHidden|adjustResize"

完璧に機能します。 :)

5
Arun

アクティビティのonCreate()メソッドでこれを使用できます

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

またはこのコードをAndroidManifest.xmlのアクティビティタグに貼り付けます

Android:windowSoftInputMode="stateVisible"
3
sommer

アクティビティタグの下のAndroid Manifest.xmlに1行のコードを追加できます。

 <activity
        Android:name="com.sams.MainActivity"
        Android:windowSoftInputMode="stateVisible" >
 </activity>

これはあなたを助けるかもしれません。

2
Mohanraj

これをXMLの親レイアウトに追加します。

Android:focusable="true" 
Android:focusableInTouchMode="true"

これにより、アクティビティの開始時にフォーカスがeditTextにないことが保証されます。

1
Ben

あなたはプログラムのようにそれを行うことができます

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);

またはAndroid:windowSoftInputMode="stateHidden"内の<activity tagAndroidManifest.xmlを設定します

1

Androidのそのバージョンでは、ビューが拡大されると、フォーカスはデフォルトで最初のフォーカス可能なコントロールに設定されます-物理的なキーボードがない場合、画面上のキーボードがポップアップします。

これを修正するには、明示的に別の場所にフォーカスを設定します。 EditText以外にフォーカスが設定されている場合、スクリーンキーボードは表示されません。

エミュレータでAndroid 1.5を実行して、これをテストしましたか?

1
dmazzoni
InputMethodManager imm = (InputMethodManager)GetSystemService(Context.InputMethodService);
        imm.ShowSoftInput(_enterPin.FindFocus(), 0);

*これはAndroid.xamarinとFindFocus()用です-上記のコードの前に_enterPin.RequestFocus()があるので、現在フォーカスがあるこのビューをルートとする階層内のビューを検索し、_enterPin EditTextのキーボードを表示します*

0
Ruchira

インポートが一番上にある場所にこれを含めます。

import Android.view.WindowManager;

OnCreateパーツに次のコードを追加します。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ....
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
0
Mike Zriel