onItemClickListener в GridView не перехватывает события щелчка при отображении компонентов WebView - PullRequest
2 голосов
/ 11 октября 2011

Мне нужно отобразить компоненты WebView в GridView. Проблема в том, что на Android 2.3.x onItemClickListener не перехватывает события щелчка. Это нормально на Android 2.2.x. Проблема для меня зависит от функции webview isInTouchMode (), которая всегда возвращает TRUE на Android 2.3 и возвращает false на Android 2.2. Я думаю, что решение имеет значение false для этого параметра, но я не знаю как !! Есть кто-нибудь, кто может мне помочь, пожалуйста? Спасибо

Ответы [ 3 ]

2 голосов
/ 25 июня 2012

Я использую следующий код:

public class GifView extends WebView {

    /**
     * @param context
     * @param attrs
     */
    public GifView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setClickable(false);
        setFocusable(false);
        setFocusableInTouchMode(false);
        setLongClickable(false);

    }

    // actions

}
0 голосов
/ 20 декабря 2011

Джейсон Шах объясняет все в этом посте :

Обработка Android 2.3 WebView не работает AddJavascriptInterface

(заранее извиняюсь перед своими обычными читателями за эту техническую тему.)

Команда Google Android выпустила Android 2.3 ("Gingerbread") SDK два дня назад, с большой помпой.Это привело мир технологического блога в безумие публикации, как это обычно бывает.Однако возникла потенциально катастрофическая ошибка, которая могла вызвать сбой буквально тысяч приложений в Android Market сразу после открытия приложения.

Проблема кратко описана здесь: http://code.google.com/p/android/issues/detail?id=12987 Вкратце: многие приложения показываютполностью или частично их пользовательский интерфейс со встроенными WebView, которые могут отображать HTML.Эти WebViews используют замечательную функцию, которая связывает JavaScript (в HTML) с нативным кодом Java, который «окружает» WebView.Этот мост полностью сломан в Android 2.3.Попытка сделать хотя бы простой вызов немедленно нарушает WebView и приводит к сбою приложения.

Я полагаю, что члены команды Android знают об этой проблеме, и из ранних отчетов она не затрагивает Nexus S (первоеТелефон Android 2.3).Однако это не очень помогает тем из нас, кто работает против эмулятора.

0 голосов
/ 12 октября 2011

Решено: Я создал объект MyWebView, который расширяет WebView и переопределяет некоторые методы:

    @Override
public boolean isInTouchMode() {
    return false;
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
    return false;
}

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    return false;
}
...