xamarin / Xamarin.Forms

Xamarin.Forms is no longer supported. Migrate your apps to .NET MAUI.
https://aka.ms/xamarin-upgrade
Other
5.63k stars 1.88k forks source link

[Bug] IndicatorView does not respect MaximumVisible on iOS and does not always apply IndicatorSize on Android #14961

Open irinakush opened 2 years ago

irinakush commented 2 years ago

Description

[Android] When IndicatorSize is changed, IndicatorView does not seem to apply the change until MaximumVisible is changed.

[iOS] When IndicatorSize and item number are large and MaximumVisible is set a number of items, IndicatorView ignores MaximumVisible value.

Steps to Reproduce

[Android]

  1. Use xamarin-forms-samples/UserInterface/IndicatorViewDemos/
  2. Run the demo
  3. Select Configurable IndicatorView in the options Android_start
  4. Set IndicatorSize to 12 Expected: Indicators size changes. Actual: Indicators size seems to be still 6 and they are more spaced. image
  5. Change MaximumVisible = 10 Result: Indicators size seems to adjust to 12 and there are 10 items. Android-10-12
  6. Change MaximumVisible = 15
  7. Set IndicatorSize to 18 Expected: Indicators size changes. Actual: Indicators size seems to be still 12, they are more spaced and not all of them visible (you can see a bit of the selected indicator - Aqua - on the right).

Android

[iOS]

  1. Use xamarin-forms-samples/UserInterface/IndicatorViewDemos/
  2. Run the demo
  3. Select Configurable IndicatorView in the options
  4. Set MaximumVisible to 15
  5. Set IndicatorSize to 18 iOS-18
  6. Set IndicatorSize to 12 iOS-12

Expected Behavior

[Android] When IndicatorSize is changed, the change should be applied.

[iOS] IndicatorView should display the number of items specified in MaximumVisible unless this is iOS UIPageControl functionality and in this case the documentation update is required.

Actual Behavior

[Android] When IndicatorSize is changed, IndicatorView does not seem to apply the change until MaximumVisible is changed.

[iOS] When IndicatorSize and item number are large and MaximumVisible is set a number of items, IndicatorView ignores MaximumVisible value.

Examples: Size = 18, MaximumVisible = 15: only 5 indicators are displayed and the control shrinks indicators at both sides to suggest that more pages are available (shrinking is iOS behaviour). Size = 12, MaximumVisible = 15: only 8 indicators are displayed are displayed and the control shrinks indicators at both sides to suggest that more pages are available (shrinking is iOS behaviour).

Basic Information

Environment

Show/Hide Visual Studio info ``` Microsoft Visual Studio Professional 2019 Version 16.11.5 VisualStudio.16.Release/16.11.5+31729.503 Microsoft .NET Framework Version 4.8.04084 Installed Version: Professional ASP.NET and Web Tools 2019 16.11.75.64347 ASP.NET and Web Tools 2019 ASP.NET Web Frameworks and Tools 2019 16.11.75.64347 For additional information, visit https://www.asp.net/ Azure App Service Tools v3.0.0 16.11.75.64347 Azure App Service Tools v3.0.0 Azure Functions and Web Jobs Tools 16.11.75.64347 Azure Functions and Web Jobs Tools C# Tools 3.11.0-4.21403.6+ae1fff344d46976624e68ae17164e0607ab68b10 C# components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used. Common Azure Tools 1.10 Provides common services for use by Azure Mobile Services and Microsoft Azure Tools. Extensibility Message Bus 1.2.6 (master@34d6af2) Provides common messaging-based MEF services for loosely coupled Visual Studio extension components communication and integration. IntelliCode Extension 1.0 IntelliCode Visual Studio Extension Detailed Info JetBrains ReSharper 2021.1.3 Build 211.0.20210525.202743 JetBrains ReSharper package for Microsoft Visual Studio. For more information about ReSharper, visit http://www.jetbrains.com/resharper. Copyright © 2021 JetBrains, Inc. Microsoft Azure Tools for Visual Studio 2.9 Support for Azure Cloud Services projects Microsoft Continuous Delivery Tools for Visual Studio 0.4 Simplifying the configuration of Azure DevOps pipelines from within the Visual Studio IDE. Microsoft JVM Debugger 1.0 Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines Microsoft Library Manager 2.1.113+g422d40002e.RR Install client-side libraries easily to any web project Microsoft MI-Based Debugger 1.0 Provides support for connecting Visual Studio to MI compatible debuggers Microsoft Visual Studio Tools for Containers 1.2 Develop, run, validate your ASP.NET Core applications in the target environment. F5 your application directly into a container with debugging, or CTRL + F5 to edit & refresh your app without having to rebuild the container. Mono Debugging for Visual Studio 16.10.15 (552afdf) Support for debugging Mono processes with Visual Studio. NuGet Package Manager 5.11.0 NuGet Package Manager in Visual Studio. For more information about NuGet, visit https://docs.nuget.org/ ProjectServicesPackage Extension 1.0 ProjectServicesPackage Visual Studio Extension Detailed Info Razor (ASP.NET Core) 16.1.0.2122504+13c05c96ea6bdbe550bd88b0bf6cdddf8cde1725 Provides languages services for ASP.NET Core Razor. SonarLint for Visual Studio 4.38.0.36876 SonarLint is an extension to your favorite IDE that provides on-the-fly feedback to developers on new bugs and quality issues injected into their code. SQL Server Data Tools 16.0.62107.28140 Microsoft SQL Server Data Tools TypeScript Tools 16.0.30526.2002 TypeScript Tools for Microsoft Visual Studio Visual Basic Tools 3.11.0-4.21403.6+ae1fff344d46976624e68ae17164e0607ab68b10 Visual Basic components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used. Visual F# Tools 16.11.0-beta.21322.6+488cc578cafcd261d90d748d8aaa7b8b091232dc Microsoft Visual F# Tools Visual Studio Code Debug Adapter Host Package 1.0 Interop layer for hosting Visual Studio Code debug adapters in Visual Studio Visual Studio Container Tools Extensions 1.0 View, manage, and diagnose containers within Visual Studio. Visual Studio Tools for Containers 1.0 Visual Studio Tools for Containers VisualStudio.DeviceLog 1.0 Information about my package VisualStudio.Foo 1.0 Information about my package VisualStudio.Mac 1.0 Mac Extension for Visual Studio Xamarin 16.11.000.190 (d16-11@2391ed9) Visual Studio extension to enable development for Xamarin.iOS and Xamarin.Android. Xamarin Designer 16.11.0.17 (remotes/origin/11e0001f0b17269345e80b58fb3adf1ba4efe2cd@11e0001f0) Visual Studio extension to enable Xamarin Designer tools in Visual Studio. Xamarin Templates 16.10.5 (355b57a) Templates for building iOS, Android, and Windows apps with Xamarin and Xamarin.Forms. Xamarin.Android SDK 11.4.0.5 (d16-11/7776c9f) Xamarin.Android Reference Assemblies and MSBuild support. Mono: c633fe9 Java.Interop: xamarin/java.interop/d16-11@48766c0 ProGuard: Guardsquare/proguard/v7.0.1@912d149 SQLite: xamarin/sqlite/3.35.4@85460d3 Xamarin.Android Tools: xamarin/xamarin-android-tools/d16-11@683f375 Xamarin.iOS and Xamarin.Mac SDK 15.0.0.8 (0796d78dc) Xamarin.iOS and Xamarin.Mac Reference Assemblies and MSBuild support. ```

Reproduction Link

Use xamarin-forms-samples/UserInterface/IndicatorViewDemos/

irinakush commented 2 years ago

Additionally, when iOS IndicatorView item number is limited by MaximumVisible, control loses UI Page Control ability to shrink indicators at both sides to suggest that more pages are available.

Limited by MaximumVisible:

image

vs limited by UI Page Control functionality:

image

The same happens on Android. When MaximumVisible is left set to default and item number is larger than it can fit into the view, the control shrink right indicator to suggest that more items are available.. When MaximumVisible is set, the control does not shrink right indicator to suggest that more items are available.

Limited by MaximumVisible:

image

Limited by reaching the view bounds:

image