У меня есть EditText в AlertDialog, но когда он появляется, я должен нажать на текстовое поле, прежде чем раскроется клавиатура.Этот EditText объявляется в макете XML как «число», поэтому при нажатии на EditText появляется цифровая клавиатура.Я хочу исключить этот дополнительный касание и заставить всплывающую цифровую клавиатуру при загрузке AlertDialog.
Все остальные найденные мной решения включают использование
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
Это НЕ приемлемое решение, так как это приводит к появлению стандартной клавиатуры, а не к появлению цифровой клавиатуры.У кого-нибудь есть способ заставить цифровую клавиатуру всплывать в AlertDialog, предпочтительно, сохраняя мой макет, определенный в XML?
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;без этого я все равно ничего не получу.В любом случае, нажатие на текстовое поле вызовет цифровую клавиатуру.
Редактировать еще раз:
Это XML для EditText
<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>