Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

335
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!