vertical studio pantalla linearlayout hacia ejemplo deslizar deslizante deslizable abajo android scroll android-linearlayout android-scrollview

studio - scrollview eclipse android



ScrollView no se desplaza en absoluto (9)

¿Hay alguna manera de cerrar esta pregunta? Es antiguo y actualmente la respuesta marcada como válida no tiene sentido. La única cosa válida con respecto a ScrollView en este momento es esto:

Un grupo de vistas que permite desplazar la jerarquía de vistas dentro de ella. La vista de desplazamiento puede tener solo un elemento secundario colocado dentro de ella . Para agregar varias vistas dentro de la vista de desplazamiento, haga que el elemento secundario directo añada un grupo de vistas, por ejemplo, LinearLayout, y coloque vistas adicionales dentro de ese LinearLayout. Nunca agregue un RecyclerView o ListView a una vista de desplazamiento. Al hacerlo, se obtiene un rendimiento deficiente de la interfaz de usuario y una mala experiencia de usuario.

Tomado de la documentación oficial: https://developer.android.com/reference/android/widget/ScrollView.html

No puedo hacer un desplazamiento ScrollView correctamente. Siempre corta el contenido en la parte inferior, como si fuera un LinearLayout normal.

Mi código

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" > <LinearLayout android:id="@+id/scroll_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:isScrollContainer="true" android:orientation="vertical" >

Por supuesto, ya intenté agregar / eliminar las propiedades "fillViewport" y "isScrollContainer", y no cambió nada en absoluto.

Gracias por adelantado.


Android Studio agrega un NestedScrollView al archivo de actividad de algunas de sus plantillas (p. Ej., Master-Detail). Tener un ScrollView en el archivo de fragmentos y otro en el archivo de actividad de ese fragmento impide que la vista de desplazamiento funcione. Eliminar el ScrollView en mi archivo de fragmentos y dejar el del archivo de actividades resolvió el problema por mí.


Esto solucionó mi problema: agregué android:isScrollContainer="true" a un LinearLayout y eliminé el código ScrollView antes:

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ScrollView android:id="@+id/scrollViewRecords" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true"> <LinearLayout android:id="@+id/sheepList" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > </LinearLayout> </ScrollView> </LinearLayout>

Código después

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:isScrollContainer="true"> <LinearLayout android:id="@+id/sheepList" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > </LinearLayout> </LinearLayout>


Finalmente me di cuenta de que me llevó literalmente 5 horas construyendo todo paso a paso y probándolo cada paso a la vez ...

De todos modos, si tiene un problema con esto, descubrí que el oyente de setOntouch está estropeando su código, al menos en mi caso fue ...

Tengo que encontrar una manera de evitarlo, pero intente eliminar a su oyente onuch y probar su código: tiene que funcionar


Intente esta solución, solo demore su desplazamiento usando el método posterior al retraso.

fragment_test.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rootRelativeLayout" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:fresco="http://schemas.android.com/apk/res-auto"> <ScrollView android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="40dp" android:fillViewport="true" android:scrollbars="none"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> ... </RelativeLayout> </ScrollView> </RelativeLayout>

TestFragment.java

... private ScrollView mScrollView; ... mScrollView = (ScrollView) mView.findViewById(R.id.scrollView); mScrollView.setSmoothScrollingEnabled(true); ... new Handler().postDelayed(new Runnable() { @Override public void run() { if(isAdded()) { // Scroll 1000px down mScrollView.smoothScrollTo(0, 1000); } } }, 150);

Esto funcionó para mí, espero que esto ayude.


La respuesta seleccionada NO ES CORRECTA!

PUEDE usar ScrollView como la vista raíz, no funciona para usted porque le falta el relleno.

Agrega algo como:

android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin"


La vista de desplazamiento como padre no tiene problemas. Me enfrenté a este problema cuando agregamos relleno / margen al hijo directo de scrollview. Mantenga al hijo de scrollview con solo las propiedades de altura y anchura, den que funcionará bien.

<ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:animateLayoutChanges="true" android:fillViewport="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:animateLayoutChanges="true" android:orientation="vertical"> </LinearLayout> </ScrollView>


Respuesta: ScrollView no funciona cuando se utiliza como elemento raíz de un diseño XML. Tiene que ser envuelto dentro de un LinearLayout.

Solución entonces:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ScrollView android:id="@+id/scroll_view" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" > <LinearLayout android:id="@+id/scroll_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" >


eliminar el android:isScrollContainer en LinearLayout . Según la documentación de android:isScrollContainer se utiliza para configurar la vista desplazable. Espero que te ayude. Consulte este link para la definición.