2011-03-06 3 views
1

J'ai une application simple exemple WebView qui a la mise en page suivante:Comment définir le focus du clavier sur 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> 

Il fonctionne comme prévu, mais je suis intéressé par routage d'un événement de clavier à la WebView. Actuellement, même si je sélectionne le WebView (et défile etc.), quand je tape n'importe quelle clé, il va au contrôle EditText ... ce qui n'est pas ce que je veux.

Comment est-ce que je fais un événement de clavier aller à la WebView à la place?

Répondre

1

Selon this thread, tout ce que vous devez faire est de définir, à l'intérieur de l'activité principale OnCreate de(), un OnTouchListener() avec un 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; 
       } 
     }); 

Qu'est-ce que ce code fait essentiellement est verrouillage de la mise tout événement vers le bas ou vers le haut au moment où il atteint votre vue. Notez comment cela renvoie false, afin que l'événement puisse continuer à se propager vers d'autres vues, comme si elles n'étaient pas gérées.

Questions connexes