Entonces tengo un problema fascinante. A pesar de que no estoy desplazando mi vista de forma manual o programática, mi WebView se desplaza automáticamente hasta después de que se cargan los datos que contiene.
Tengo un fragmento en un visor. Cuando cargo el buscapersonas por primera vez, funciona como se esperaba y se muestra todo. Pero una vez que "volteo la página", los datos se cargan y WebView aparece en la parte superior de la página, ocultando las vistas sobre ella, lo cual no es deseable.
¿Alguien sabe cómo evitar que esto suceda?
Mi diseño se ve así:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/background" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/article_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="2dp"
android:text="Some Title"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/article_title"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/LL_Seperator"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="@color/text"
android:orientation="horizontal" >
</LinearLayout>
<WebView
android:id="@+id/article_content"
android:layout_width="match_parent"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/article_link"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:text="View Full Article"
android:textColor="@color/article_title"
android:textStyle="bold" />
</LinearLayout>
</ScrollView>
Tampoco me estoy concentrando en nada. De forma predeterminada, parece desplazarse automáticamente a WebView después de que se haya cargado. ¿Cómo puedo prevenir esto?
Respuestas:
Simplemente puede agregar esto a su LinearLayout: android: focusableInTouchMode = "true". Esto funciona para mi.
fuente
Tuve el mismo problema, después de horas de probar varias ideas, lo que finalmente funcionó para mí fue simplemente agregar el
descendantFocusability
atributo al LinearLayout que contiene ScrollView, con el valorblocksDescendants
. En tu caso:No he vuelto a tener el problema desde entonces.
fuente
RecyclerView
. Su solución también funciona en ese caso :)Debe crear una nueva clase extender ScrollView, luego anular requestChildFocus:
Luego, en su diseño xml, usando:
Funciona para mi. ScrollView ya no se desplazará automáticamente a WebView.
fuente
public ExtendedScrollView(Context context) { super(context); } public ExtendedScrollView( Context context, AttributeSet attributeSet) { super(context, attributeSet); } public ExtendedScrollView( Context context, AttributeSet attributeSet, int defStyle) { super(context, attributeSet, defStyle); }
Agregar estas líneas en el diseño principal resuelve el problema
fuente
Me gusta esto:
fuente
Probablemente hay personas que tienen el mismo problema que yo, así que ayudaré.
Estaba tratando de poner android: descenddantFocusability = "beforeDescendants" en mi ScrollView principal de la siguiente manera:
y no estaba funcionando, así que tuve que convertir un RelativeLayout en el padre de ScrollView y colocar android: descenddantFocusability = "beforeDescendants" en el padre también.
Así que lo resolví haciendo lo siguiente:
fuente
Tuve que usar el nombre completo para MyScrollView, de lo contrario obtuve una excepción de inflado.
fuente