Как сделать что-то после того, как пользователь нажимает на мой EditText

Я имею EditText это показывает время. После того, как пользователь нажимает EditText Я хочу показать a TimePickerDialog, таким образом, я установил a View.OnClickListener к моему EditText.

Но OnClickListener ведет себя странно - я затрагиваю EditText и затем клавиатура программного обеспечения появляется (который я не хочу). Когда я затрагиваю снова, OnClickListener.onClick() наконец назван и диалоговое окно появляется.

Что я должен сделать, если я хочу, чтобы диалоговое окно сразу появилось?

51
задан Sufian 23 September 2016 в 22:45
поделиться

4 ответа

В отличие от большинства других элементов управления, 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" />
112
ответ дан 7 November 2019 в 09:44
поделиться

Я решал это, используя индивидуальную кнопку, как это:

<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" />
2
ответ дан 7 November 2019 в 09:44
поделиться

Похоже, вы не хотите, чтобы пользователь на самом деле мог вводить в EDITTEXT. Вы просто хотите, чтобы они могли выбрать время через сортировщик времени. Так почему бы не просто кнопка, которая всплывает время TimePokerDialog? Вы можете отобразить время, которое было выбрано в текстовом представлении.

Или вы могли бы просто заменить вид Edittext с помощью Timepicker View (не диалоговое окно, просто регулярное представление).

3
ответ дан 7 November 2019 в 09:44
поделиться

Если я правильно понимаю, вам просто нужно что-то вроде

<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" 

, что устарело, но делает трюк.

1
ответ дан 7 November 2019 в 09:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: