2010-12-30 8 views
5

Tengo una vista web en una vista de desplazamiento, cuando se carga la actividad, fuerza mi vista de desplazamiento hacia abajo (donde está la vista web) una vez que la vista web finaliza "loadData". ¿Cómo evito que esto suceda? He intentado esto, pero salta la pantalla hacia arriba y hacia abajo, lo que no quiero:webview está forzando mi vista de desplazamiento hacia la parte inferior

ScrollView scroll = (ScrollView)findViewById(R.id.detailsScroll); 
scroll.post(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     ScrollView scroll = (ScrollView)findViewById(R.id.detailsScroll); 
     scroll.fullScroll(ScrollView.FOCUS_UP); 
    } 
}); 
+2

Usted no debe poner una vista web en un ScrollView. Las vistas desplazables dentro de las vistas desplazables no funcionan. – Falmarri

+0

bien, entonces, ¿cómo debo hacer esto si el contenido de la Actividad es más grande que la pantalla? – steve

+0

... ¿y no es esto lo que está haciendo admob? Parece que la vista web se está enfocando una vez que se cargan los contenidos, lo que hace que la vista de desplazamiento salte. – steve

Respuesta

5

Crea una alfombrilla de ScrollView con este método:

@Override 
public void requestChildFocus(View child, View focused) { 
    if (child instanceof WebView) return; 
} 
10

La respuesta de fhucho es OK para evitar que la vista web se desplace hacia abajo. Pero perderá toda accesibilidad con trackball, etc. Así que encontré una mejora:

public class MyScrollView extends ScrollView { 

    @Override 
    public void requestChildFocus(View child, View focused) { 
     if (focused instanceof WebView) 
      return; 
    super.requestChildFocus(child, focused); 
    } 
} 

Espero que ayude!

+0

Lamentablemente, esto impide que el teclado se muestre al hacer clic en los campos de entrada dentro de la vista web. – spatialist

2

Para cuestiones relacionadas con foco, encontré esto funcionó mejor, añadiendo de inmediato a su vista Web en XML:

android:focusable="false" 
    android:focusableInTouchMode="false" 

Aunque para la pregunta real preguntó, simplemente añadiendo otra vista que obtiene el foco por defecto, en lugar de WebView, debería haber resuelto ese problema. Creo que otros como yo pueden encontrar esto al tratar de lidiar con otros problemas generales con un WebView dentro de ScrollView tomando el foco. Agregar lo anterior al XML no impide que los hipervínculos en WebView funcionen.

0

Agregar a su diseño principal

androide: descendantFocusability = "blocksDescendants"

Cuestiones relacionadas