AlertDialog に EditText がありますが、それがポップアップしたときに、キーボードがポップアップする前にテキスト ボックスをクリックする必要があります。この EditText は XML レイアウトで "number" として宣言されているため、EditText をクリックするとテンキーがポップアップします。この余分なタップをなくして、AlertDialog がロードされたときにテンキーをポップアップさせたいと思います。
私が見つけた他のすべての解決策には、
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
数値キーボードではなく標準キーボードが表示されるため、これは受け入れられる解決策ではありません。XMLでレイアウトを定義したまま、できればAlertDialogで数値キーボードをポップアップさせる方法はありますか?
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle("Mark Runs")
.setView(markRunsView)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
EditText runs = (EditText)markRunsView.findViewById(R.id.runs_marked);
int numRuns = Integer.parseInt(runs.getText().toString());
// ...
})
.setNegativeButton("Cancel", null)
.show();
編集:レイアウトが既に持っていることを完全に明確にしたい:
android:inputType="number"
android:numeric="integer"
私もこれを試しました:
//...
.setNegativeButton("Cancel", null)
.create();
EditText runs = (EditText)markRunsView.findViewById(R.id.runs_marked);
runs.setInputType(InputType.TYPE_CLASS_NUMBER);
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
dialog.show();
しかし、それもうまくいきませんでした。setSoftInputMode 行を使用すると、AlertDialog が読み込まれるときにフル キーボードが表示されます。それがなければ、私はまだ何も得られません。いずれの場合も、テキスト ボックスをタップするとテンキーが表示されます。
再度編集:
これは EditText の XML です。
<EditText
android:id="@+id/runs_marked"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="4dip"
android:inputType="number"
android:numeric="integer">
<requestFocus/>
</EditText>