Как установить фокус клавиатуры на WebView?

У меня есть простое приложение-пример WebView со следующим макетом:

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is /res/layout/main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent">

  <EditText android:id="@+id/urlToLoad"
    android:hint="Type url to load"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>

  <Button android:id="@+id/webviewgo"
    android:text="Go"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:enabled="false" />

  <com.example.exWebView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
  />    

</LinearLayout>

Он работает, как и ожидалось, но меня интересует перенаправление события клавиатуры в WebView. В настоящее время, даже если я выбираю WebView (и прокручиваю и т. д.), когда я набираю любую клавишу, она переходит к элементу управления EditText... чего я не хочу.

Как сделать, чтобы событие клавиатуры вместо этого переходило в WebView?


person Regex Rookie    schedule 06.03.2011    source источник


Ответы (1)


Согласно этой теме, все, что вам нужно сделать, это установить внутри OnCreate() основного действия. , OnTouchListener() с requestFocus():

    mWebView = (MyWebView) findViewById(R.id.webview);
    mWebView.setOnTouchListener(new View.OnTouchListener() { 
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) { 
                       case MotionEvent.ACTION_DOWN: 
                       case MotionEvent.ACTION_UP: 
                           if (!v.hasFocus()) { 
                               v.requestFocus(); 
                           } 
                           break; 
                   } 
                   return false; 
                }
        });

Что этот код в основном делает, так это блокирует фокус на любом событии вниз или вверх в тот момент, когда оно достигает вашего представления. Обратите внимание, что он возвращает значение false, чтобы событие могло в дальнейшем распространяться на другие представления, как если бы оно не было обработано.

person Android Eve    schedule 07.03.2011