Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

336
Vistas
Desplácese hacia abajo para ScrollView en Xamarin

Quería agregar un indicador de desplazamiento hacia abajo a ScrollView en mi aplicación Xamarin , para lo cual seguí este artículo .

Lo que en realidad hace es que agrega un indicador de desplazamiento hacia abajo ( Label ) fuera de Scrollview , por lo que si el texto es más grande que el tamaño de la página muestra esta indicación, escrita "¡ Desplácese hacia abajo para obtener más! ", y al desplazarse completamente hacia el fin, oculta este indicador.

Esta parte está funcionando, pero si el texto es menor que la página, todavía muestra este indicador de desplazamiento hacia abajo.

Quiero que si el texto es menor que la página, la visibilidad del indicador de desplazamiento hacia abajo debería ser falsa.

.xaml

 <Grid> <ScrollView x:Name="MyScrollView" Scrolled="MyScrollView_Scrolled"> <StackLayout> <BoxView BackgroundColor="Red" HeightRequest="128"/> <BoxView BackgroundColor="Orange" HeightRequest="128"/> </StackLayout> </ScrollView> <Label x:Name="ScrollDownIndicator" Text="Scroll down for more!" BackgroundColor="Black" TextColor="White" FontSize="Large" HorizontalTextAlignment="Center" VerticalOptions="End"/> </Grid>

.xaml.cs

 private void MyScrollView_Scrolled(object sender, ScrolledEventArgs e) { double spaceAvailableForScrolling = MyScrollView.ContentSize.Height - MyScrollView.Height; double buffer = 32; ScrollDownPrompt.IsVisible = spaceAvailableForScrolling > e.ScrollY + buffer; }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Haciendo malabarismos con su código, llegué a una solución que podría llevarlo a donde desea.

¿Solo buscas la solución? vaya y lea la sección Solución . Si quieres saber el por qué , sigue adelante y lee la sección Explicación .


Solución

En primer lugar, me di cuenta de que en el código que publicó, la Label en el archivo Xaml se llama ScrollDownIndicator , pero en el controlador de eventos está cambiando una variable llamada ScrollDownPrompt . En mis pruebas seguí adelante para igualar ambos nombres...

En su archivo .xaml.cs , agregue las siguientes líneas al constructor de su página:

 public MainPage() { InitializeComponent(); MyScrollView.PropertyChanged += (s, a) => { if (a.PropertyName == ScrollView.ContentSizeProperty.PropertyName) { double buffer = 32; double spaceAvailableForScrolling = MyScrollView.ContentSize.Height - MyScrollView.Height; ScrollDownIndicator.IsVisible = spaceAvailableForScrolling > buffer; } }; } private void MyScrollView_Scrolled(object sender, ScrolledEventArgs e) { double spaceAvailableForScrolling = MyScrollView.ContentSize.Height - MyScrollView.Height; double buffer = 32; ScrollDownPrompt.IsVisible = spaceAvailableForScrolling > e.ScrollY + buffer; }

Explicación

En su código, solo cambia la visibilidad del Indicador del controlador de eventos: MyScrollView_Scrolled . Si no se realiza desplazamiento, no se llama al controlador de eventos y no se verifica la visibilidad del indicador: simplemente siempre está visible.

Para corregir este comportamiento, debe verificar la visibilidad cuando cambia la propiedad ContentSize de ScrollView.

Espero que esto ayude a algunas personas: D

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda