Как узнать, какой HTML-элемент был затронут в webview?

#c# #android #xamarin #xamarin.android

#c# #Android #xamarin #xamarin.android

Вопрос:

Мне нужно выяснить, на какой элемент был нажат, когда пользователь прикасается к содержимому Android.Webkit.WebView , совершенно независимо от типа HTML-элемента.

До сих пор мой подход заключался в использовании события касания и выполнении теста попадания, подобного этому:

 private void WebView_Touch(object sender, View.TouchEventArgs e)
{
    var hitTest = webView.GetHitTestResult();
    var type = hitTest.Type;
    var element = hitTest.Extra;
    // Determine what todo based on type and element
}
  

Однако, когда я нажимаю, например, на <button> элемент, событие запускается, но проверка попадания не дает результатов, т. Е. тип и элемент пусты. Возможно, проверка попадания еще не была выполнена? Нужно ли мне вызывать GetHitRect ?

Комментарии:

1. GetHitTestResult работает только с определенными известными типами элементов, такими как anchor, img и т.д. См. : developer.android.com/reference/android/webkit/… Каковы конкретно ваши требования? это помогло бы предложить решение.

2. @Nandy: Спасибо, приятно знать. Я соответствующим образом уточнил вопрос. В моем тестовом сценарии я пробовал использовать <button> элемент. Я предполагаю, что это будут самые важные, но в идеале решение должно быть универсальным в этом отношении.

Ответ №1:

Мы можем обнаружить следующие HTML-элементы в соответствии с документом Android API.

     int     ANCHOR_TYPE     HitTestResult for hitting a HTML::a tag
    int     EDIT_TEXT_TYPE  HitTestResult for hitting an edit text area
    int     EMAIL_TYPE  HitTestResult for hitting an email address
    int     GEO_TYPE    HitTestResult for hitting a map address
    int     IMAGE_ANCHOR_TYPE   HitTestResult for hitting a HTML::a tag which contains HTML::img
    int     IMAGE_TYPE  HitTestResult for hitting an HTML::img tag
    int     PHONE_TYPE  HitTestResult for hitting a phone number
    int     SRC_ANCHOR_TYPE     HitTestResult for hitting a HTML::a tag with src=http
    int     SRC_IMAGE_ANCHOR_TYPE   HitTestResult for hitting a HTML::a tag with src=http   HTML::img
    int     UNKNOWN_TYPE    Default HitTestResult, where the target is unknown 
  

Комментарии:

1. Я понял это перечисление как нечто, дающее вам дополнительную подсказку, какой элемент был обработан, но ограничена ли функциональность hit test этими типами?