Xamarin.forms: [Error] CarouselView empuja otros diseños y consume todo el espacio

Creado en 24 nov. 2019  ·  17Comentarios  ·  Fuente: xamarin/Xamarin.Forms

Descripción

CarouselView está consumiendo todo el espacio vertical en mi diseño, a menos que le dé un tamaño. Pero no sé la altura para darle b / c quiero que se ajuste a mi contenido. Por favor, déjeme ajustar el tamaño a mi contenido, ya sea la altura o el ancho, ¿quizás?

<StackLayout Margin="15">
            <Frame BackgroundColor="White"
                   Padding="10"
                   BorderColor="Black"
                   CornerRadius="0">
                <CarouselView>
                    <CarouselView.ItemsSource>
                        <x:Array Type="{x:Type x:String}">
                            <x:String>rei_01.jpg</x:String>
                            <x:String>rei_02.jpg</x:String>
                            <x:String>rei_03.jpg</x:String>
                            <x:String>rei_04.jpg</x:String>
                        </x:Array>
                    </CarouselView.ItemsSource>
                    <CarouselView.ItemTemplate>
                        <DataTemplate>
                            <Image Source="{Binding .}"/>
                        </DataTemplate>
                    </CarouselView.ItemTemplate>
                </CarouselView>
            </Frame>

        </StackLayout>

Comportamiento esperado

CarouselView se adapta a mi contenido y proporciona un diseño coherente en diferentes tamaños de pantalla.

Comportamiento real

CarouselView consume TODO el espacio en el diseño, incluso empujando otros diseños fuera de la vista. Tengo que establecer una altura para lograr los resultados que deseo en esta pantalla, pero se verá mal en pantallas de otros tamaños.

Información básica

  • Versión con problema: 4.4.0-pre2
  • Marcos de destino de la plataforma:

    • Android: 10

Capturas de pantalla

Toda altura consumidora:

bug-cv-allheight

Altura fija (adivinar):

bug-cv-fixedheight

Enlace de reproducción

https://github.com/davidortinau/CarouselGallery/blob/master/CarouselGallery/CarouselGallery/Views/REIPage.xaml

carouselview collectionview blocker 3 high impact Android bug

Comentario más útil

Mientras tanto, estoy escribiendo tanto código de solución para errores como este que toda la ventaja multiplataforma se está derrumbando ... Usé un HeightRequest fijo en el CarouselView para evitar un tamaño de altura infinito, pero, como puede suponer, esto causa nuevos nubes.

Todos 17 comentarios

Confirmado que esto está sucediendo. Probé un par de cosas diferentes para ajustar el tamaño al contenido, pero parece que siempre toma la altura completa disponible. Ocurre en Android.

En iOS es NRE por completo, el seguimiento de la pila se encuentra a continuación. Sin embargo, no estoy seguro de que esté relacionado con esto. El error de iOS parece más un problema de Shell

en System.Reflection.RuntimeConstructorInfo.InternalInvoke (System.Object obj, System.Object [] parámetros, System.Boolean wrapExceptions) [0x00018] en / Users / builder / jenkins / workspace / xamarin-macios / xamarin-macios / external / mono /mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:944
en System.RuntimeType.CreateInstanceMono (System.Boolean nonPublic, System.Boolean wrapExceptions) [0x00095] en / Users / builder / jenkins / workspace / xamarin-macios / xamarin-macios / external / mono / mcs / class / corlib / ReferenceSources / RuntimeType.cs: 185
en System.RuntimeType.CreateInstanceSlow (System.Boolean publicOnly, System.Boolean wrapExceptions, System.Boolean skipCheckThis, System.Boolean fillCache) [0x00009] en / Users / builder / jenkins / workspace / xamarin-macios / xamarin-macios / external / mono / mcs / class / corlib / ReferenceSources / RuntimeType.cs: 155
en System.RuntimeType.CreateInstanceDefaultCtor (System.Boolean publicOnly, System.Boolean skipCheckThis, System.Boolean fillCache, System.Boolean wrapExceptions, System.Threading.StackCrawlMark & ​​stackMark) [0x00027] en / Users / builder / jenkins / workspace /xamarin-macios/external/mono/mcs/class/referencesource/mscorlib/system/rttype.cs:5770
en System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic, System.Boolean wrapExceptions) [0x00039] en / Users / builder / jenkins / workspace / xamarin-macios / xamarin-macios / external / mono / mcs / class /referencesource/mscorlib/system/activator.cs:206
en System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic) [0x00000] en / Users / builder / jenkins / workspace / xamarin-macios / xamarin-macios / external / mono / mcs / class / referenceource / mscorlib / system / activator.cs: 190
en System.Activator.CreateInstance (System.Type type) [0x00000] en /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/mcs/class/referencesource/mscorlib/system/activator.cs : 134
en Xamarin.Forms.ElementTemplate + <> c__DisplayClass4_0. <. ctor> b__0 () [0x00000] en d: agent1sXamarin.Forms.CoreElementTemplate.cs: 26
en Xamarin.Forms.ElementTemplate.CreateContent () [0x00031] en d: agent1sXamarin.Forms.CoreElementTemplate.cs: 82
en Xamarin.Forms.Internals.DataTemplateExtensions.CreateContent (Xamarin.Forms.DataTemplate self, System.Object item, Xamarin.Forms.BindableObject container) [0x00001] in d: agent1sXamarin.Forms.CoreDataTemplateExtensions.cs: 19
en Xamarin.Forms.ShellContent.Xamarin.Forms.IShellContentController.GetOrCreateContent () [0x00036] en d: agent1sXamarin.Forms.CoreShellShellContent.cs: 61
en Xamarin.Forms.Platform.iOS.ShellSectionRootRenderer.LoadRenderers () [0x00024] en d: agent1sXamarin.Forms.Platform.iOSRenderersShellSectionRootRenderer.cs: 145
en Xamarin.Forms.Platform.iOS.ShellSectionRootRenderer.ViewDidLoad () [0x0003b] en d: agent1sXamarin.Forms.Platform.iOSRenderersShellSectionRootRenderer.cs: 63
en (contenedor administrado a nativo) UIKit.UIApplication.UIApplicationMain (int, string [], intptr, intptr)
en UIKit.UIApplication.Main (System.String [] args, System.IntPtr principal, System.IntPtr delegate) [0x00005] en /Library/Frameworks/Xamarin.iOS.framework/Versions/13.8.2.2/src/Xamarin.iOS /UIKit/UIApplication.cs:86
en UIKit.UIApplication.Main (System.String [] args, System.String principalClassName, System.String delegateClassName) [0x0000e] en /Library/Frameworks/Xamarin.iOS.framework/Versions/13.8.2.2/src/Xamarin.iOS /UIKit/UIApplication.cs:65
en CarouselGallery.iOS.Application.Main (System.String [] args) [0x00001] en /Users/jfversluis/Downloads/CarouselGallery-master/CarouselGallery/CarouselGallery.iOS/Main.cs:17

@rmarinho
Silbido. ¿Algún progreso en esto? Con este error, CarouselView no se puede utilizar.

Después de hablar con @ez , creo que este es un problema que debemos analizar también con CollectionView, veremos cómo solucionarlo.

Como solución alternativa, funciona si lo pones en un diseño de pila

Como solución alternativa, funciona si lo pones en un diseño de pila

Pero en el código de muestra de @davidortinau, CarouselView ya está colocado dentro de un StackLayout. ¿Cómo se supone que funciona su solución?

@samhouts ¿Hay algún progreso en esto? Un gran problema para mi cajero automático
92681524_158411695451139_3418474344739766272_n (1)

Me encantaría ver una solución para esto también.

Espero ver este problema solucionado para CollectionView. Parece que los problemas de espacio con ambos se están abordando al mismo tiempo. Pasé un montón de tiempo tratando de averiguar por qué mi diseño, que incluye dos CollectionViews, no se presentaba como esperaba.

Abierto el 24 de noviembre de 2019 ... ¿alguna noticia?

@samhouts
Con este error, CarouselView no se puede utilizar. ¿Se va a arreglar esto alguna vez?

Equipo de Xamarin, estos componentes no se pueden usar en un entorno de producción en este momento. Este problema ha estado abierto desde finales de 2019. ¿Qué está pasando? Si están dañados y no se reparan, por favor, elimínelos para que los desarrolladores lo sepan, en lugar de dejar que pierdan el tiempo en algo que finalmente no funcionará. Es mejor si están obsoletos, ya que la expectativa será que no funcionen o no se arreglen.
¡Gracias!

Para que lo sepas, un truco muy sucio que se suscribe a los cambios de tamaño de la vista del elemento se puede usar para configurar manualmente la altura de CollectionView de manera apropiada, si es absolutamente necesario usar CollectionView. Pero a mí también me gustaría ver que esto funcione fuera de la caja. :)

Mientras tanto, estoy escribiendo tanto código de solución para errores como este que toda la ventaja multiplataforma se está derrumbando ... Usé un HeightRequest fijo en el CarouselView para evitar un tamaño de altura infinito, pero, como puede suponer, esto causa nuevos nubes.

¿Alguna palabra sobre esto? Cada vez que quiero usar CollectionView o CarouselView, este problema me quema y tengo que recurrir a repetidores de clientes o diseños enlazables. Es decepcionante que no se le haya dado una alta prioridad, especialmente porque CollectionView está fuera de Vista previa.

Solucione esto, esto está afectando mucho, tengo una vista de colección y una vista de carrusel en la misma página y esto me está matando ...

Sí, estoy teniendo el mismo problema aquí

¿Alguien ha encontrado una solución para este problema?

¿Fue útil esta página
0 / 5 - 0 calificaciones