xamarin/Xamarin.Forms

[Android] RecycleElement List: using bindings for FormattedText results in "requestLayout() improperly called" issues

Aperta

#3335 aperta il 18 lug 2018

 (3 commenti) (4 reazioni) (0 assegnatari)C# (1926 fork)batch import
a/layoute/5 :clock5:help wantedinactivep/Androidt/bug :bug:up-for-grabs

Metriche repository

Star
 (5644 stelle)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

Description

I have a list with CachingStrategy set to RecycleElement. When using bindings for a label's FormattedText the console is filled with messages like requestLayout() improperly called by {...}.FormsTextView{...} during layout: running second layout pass

Steps to Reproduce

  1. Create a List with CachingStrategy set to RecycleElement
  2. Add simple cells: a label with FormattedText linked to a bindable property in the view model
  3. Fast scroll up and down

Expected Behavior

The list should scroll smoothly with no errors

Actual Behavior

Application Output is filled with messages like the one above. The scroll's behavior doesn't seem to be impacted when the debugger is not connected. These messages are not displayed when binding to a CLR property which creates a new FormattedString() instance on each get or when using RetainElement as a CachingStrategy.

Basic Information

  • Version with issue: Xamarin.Forms 3.1.0.637273
  • Last known good version: ?
  • IDE:
  • Platform Target Frameworks:
    • Android: 8.1
  • Affected Devices: I can name Huawei Nexus 6P (API 27) but it happens on other devices too

Reproduction Link

FormattedTextRepro.zip

Guida contributor