¿Existe una manera de anular el comportamiento de WebView?
Obtengo el WebView
de mi diseño:
WebView webView = (WebView) rootView.findViewById(R.id.myWebView);
Quiero anular el comportamiento de onKeyDown
. Normalmente, puedo anularlo subclassing.
- UiAutomator getLastTraversedText ()
- Cómo deshabilitar completamente el teclado virtual para todas las entradas en la vista web de Android
- Android expandiblelistview no puede mostrar el último grupo cuando se ha expandido
- Añadir javascript a WebView
- ¿Cómo utilizar WebView para mostrar páginas html en modo lector de libros electrónicos?
WebView webView = new WebView(this) { @Override public boolean onKeyDown (int keyCode, KeyEvent event) { // Do my stuff.... } }
Sin embargo, puesto que conseguí el WebView usando findViewById
, hay una manera de anular el método?
PS: En realidad es un caso mucho más complicado, y no puedo reemplazar onKeyDown
en MainActivity
, ya que llamar a la onKeyDown
en WebView
primero.
- Android: Uso de WebView fuera de un contexto de actividad
- Recarga de WebView cuando Fragmento en ViewPager se retiene desde BackStack
- Habilitar teclado de correo electrónico en android para el tipo de entrada de correo electrónico
- ¿Cómo obtengo el contenido de la página web desde un WebView?
- Vista Web de Android: la página web debe ajustarse a la pantalla del dispositivo
- Cargar todos los fragmentos en la apertura de la aplicación
- Deshabilitar vínculos de WebView funciona en el emulador pero no en el dispositivo
- Android: extraer cookies después de iniciar sesión en la vista web
Si desea anular ciertos métodos, debe crear una clase WebView
personalizada que extends WebView
.
Se vería algo como esto:
public class CustomWebView extends WebView { public CustomWebView(Context context) { this(context, null); } public CustomWebView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CustomWebView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); /* any initialisation work here */ } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { /* your code here */ return super.onKeyDown(keyCode, event); } }
Para que esto funcione, tiene que cambiar el archivo de diseño XML en consecuencia:
<com.example.stackoverflow.CustomWebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" />
Además, cuando infle el WebView
, asegúrese de que está enviándolo al tipo correcto que es CustomWebView
.
CustomWebView webView = (CustomWebView) findViewById(R.id.webview);
De lo contrario, obtendrá una java.lang.ClassCastException
.
- Cómo simular y probar la actualización de la aplicación en Android y iphone
- Cocos2d-x setAnimationInterval no funciona en Android