xamarin/Xamarin.Forms

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

開放

#3,335 建立於 2018年7月18日

 (3 則留言) (4 個反應) (0 位負責人)C# (1,926 個分叉)batch import
a/layoute/5 :clock5:help wantedinactivep/Androidt/bug :bug:up-for-grabs

倉庫指標

星標
 (5,644 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

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

貢獻者指南