Android WebView: как заставить работать контекстное меню для текстовой области? - PullRequest
0 голосов
/ 16 ноября 2011

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

Я нашел это One , предлагая добавить onLongClick к действию,но я попробовал, и это совсем не получилось.

// ---------------------------------------------------------------

РЕДАКТИРОВАТЬ:

Iполучил подсказку по связанному вопросу о том, что я должен создать подкласс веб-просмотра и переопределить некоторые функции.Кажется, у меня работает контекстное меню.Тем не менее, веб-просмотр не ведет себя нормально.В частности, я не могу больше прокручивать вид.Я думаю, я просто что-то пропустил.Ваша помощь очень ценится.Вот мой код:

public class MyWebView extends WebView {
    WebViewerActivity _activity;
    Context _context;
    GestureDetector _gd;

    public MyWebView(Context context, AttributeSet attributeSet){
        super(context, attributeSet);
        this._context = context;
        _gd = new GestureDetector(context, sogl);
    }
    public void setActivity(WebViewerActivity activity){
        _activity = activity;
    }
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        return _gd.onTouchEvent(ev);
    }
    GestureDetector.SimpleOnGestureListener sogl = new GestureDetector.SimpleOnGestureListener(){
        public boolean onDown(MotionEvent event) 
        {             
            return true;         
        }          
        public void onLongPress(MotionEvent event) 
        {             
            _activity.onLongClick(MyWebView.this);
        } 
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {         
        MyWebView.this.scrollBy((int)distanceX, (int)distanceY);
        return true;
    }
    };
}    

// ---------------------------------------------------------------

БОЛЬШЕ РЕДАКТИРОВАТЬ:

Хорошо, я добавил переопределениеonScroll to SimpleOnGestureListener, как показано выше, и он заставляет работать прокрутку веб-просмотра.Однако первоначальная прокрутка веб-просмотра автоматически возвращается в исходное состояние, если вы прокручиваете его слишком далеко снаружи.Тем не менее, эта прокрутка не имеет этой приятной функции.Есть идеи как это исправить?

1 Ответ

0 голосов
/ 16 ноября 2011

Попробуйте вместо этого зарегистрировать onLongClickListener в WebView. Представление может использовать событие и не передавать его обратно в Activity. Я предполагаю, что в настоящее время рабочие меню создаются путем регистрации WebView с помощью Activity.registerForContextMenu ()?

...