2015-08-03 3 views
0

Я сейчас пытаюсь улучшить андроид, который я недавно получил в качестве передачи от стажера.Определите, какой вид клика был нажат/коснулся ниже alertdialog

Режущий к случаю, что я пытаюсь достичь, когда возникает ошибка, например, неверный вход, отображается пользовательский alertdialog - это работает нормально. Предупреждение отображается в нижней части экрана и остается до касания экрана. Проблема в том, что я хотел бы, чтобы фокус был настроен на то, что касается пользователя, например, пользователь может коснуться ввода имени пользователя или ввода пароля. Фокус должен получить запрос по указанному мнению.

Но я не могу понять, как определить, какое представление нажата «внизу» диалогового окна предупреждения.

+1

Диалоговое окно появляется и просматривается, поэтому вы не можете коснуться вида под ним, вам нужно отменить диалог, прежде чем какое-либо взаимодействие произойдет на следующем рисунке. Это нормальное поведение в отношении Android, которое ожидают – tyczj

+0

, но это неудачно. Невозможно определить, какое представление имеет конкретное значение x, y, если я использовал MotionEvent для получения значений x, y? – Snappiestjack

ответ

0

Как вы сами намекнули на комментарий к вопросу, можно найти все виды, которые находятся на определенном (x, y).

Прямоугольник чертежа можно найти от View#getDrawingRect(android.graphics.Rect), вам может потребоваться скомпенсировать прокрутку изображения (например, ScrollView, ListView).

Вы можете найти правильный вид, получая вид корня, а затем проходит через все точки зрения, и суб видов, и подвиды-подвиды и т.д.

Используйте findViewById, чтобы найти подходящий вид корня (для деятельности) или сохранить ссылку на корневой вид фрагмента, когда вы делаете onCreateView.

Будьте осторожны, чтобы выбрать самый глубокий вид, так как он расположен сверху.

Но, как сказал @tyczj, пользователи Android используются для случая, когда нажатие вне диалогового окна предупреждения не влияет на вид ниже.

Удачи вам!

Смежные вопросы