Я имею EditText
это показывает время. После того, как пользователь нажимает EditText
Я хочу показать a TimePickerDialog
, таким образом, я установил a View.OnClickListener
к моему EditText
.
Но OnClickListener
ведет себя странно - я затрагиваю EditText
и затем клавиатура программного обеспечения появляется (который я не хочу). Когда я затрагиваю снова, OnClickListener.onClick()
наконец назван и диалоговое окно появляется.
Что я должен сделать, если я хочу, чтобы диалоговое окно сразу появилось?
В отличие от большинства других элементов управления, EditText
можно фокусировать, когда система находится в «сенсорном режиме». Первое событие щелчка фокусирует элемент управления, в то время как второе событие щелчка фактически запускает OnClickListener
. Если отключить фокусировку в сенсорном режиме с помощью атрибута android: focusableInTouchMode
View, OnClickListener
должен сработать должным образом.
<EditText
android:text="@+id/EditText01"
android:id="@+id/EditText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusableInTouchMode="false" />
Я решал это, используя индивидуальную кнопку, как это:
<Button
android:id="@+id/btTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="test"
android:textSize="20dp"
android:background="@android:drawable/edit_text" />
Похоже, вы не хотите, чтобы пользователь на самом деле мог вводить в EDITTEXT. Вы просто хотите, чтобы они могли выбрать время через сортировщик времени. Так почему бы не просто кнопка, которая всплывает время TimePokerDialog? Вы можете отобразить время, которое было выбрано в текстовом представлении.
Или вы могли бы просто заменить вид Edittext с помощью Timepicker View (не диалоговое окно, просто регулярное представление).
Если я правильно понимаю, вам просто нужно что-то вроде
<EditText android:text="@+id/EditText01" android:id="@+id/EditText01"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:clickable="true" android:inputType="none" />
, не редактируемый и кликабельный. Установите OnClickListener
, и вы закончите.
Теоретически, в практике, которую вы должны добавить тоже
android:editable="false"
, что устарело, но делает трюк.