Как установить фокус клавиатуры на WebView? - PullRequest
1 голос
/ 07 марта 2011

У меня есть простой пример приложения 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?

1 Ответ

1 голос
/ 07 марта 2011

Согласно этой теме все, что вам нужно сделать, это установить внутри 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, чтобы событие могло далее распространяться на другие представления, как если бы оно не было обработано.

...