私のアプリの 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);
}
これを XML の親レイアウトに追加します。
android:focusable="true"
android:focusableInTouchMode="true"
アクティビティの開始時にフォーカスが editText にないことを保証します。
Android Mainfest.xmlのアクティビティ タグの下に 1 行のコードを追加できます。
<activity
android:name="com.sams.MainActivity"
android:windowSoftInputMode="stateVisible" >
</activity>
これはあなたを助けるかもしれません。
そのバージョンの Android では、ビューがインフレートされると、フォーカスはデフォルトで最初のフォーカス可能なコントロールに設定されます。物理キーボードがない場合は、オンスクリーン キーボードがポップアップします。
これを修正するには、フォーカスを別の場所に明示的に設定します。フォーカスが EditText 以外に設定されている場合、スクリーン キーボードは表示されません。
エミュレータで Android 1.5 を実行して、これをテストしてみましたか?
インポートが一番上にある場所にこれを含めます:
import android.view.WindowManager;
このコードを OnCreate 部分に追加します。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}