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.