Как да настроя фокуса на клавиатурата върху 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