Pio*_*rek 4 xamarin xamarin.forms
Xamarin.Forms ListView有一些趋势,在一些最大高度后停止拉伸.当我在ListView中放入太多项目时,它会创建滚动条,当我添加更多它们时,它的高度不会增加.
如果<ListView>滚动条位于<ScrollView>具有滚动条的对象内,则可能会让用户感到困惑.布局bahaves不自然,迫使用户滚动到listview的末尾,以便能够继续滚动scrollView.
所以,总结一下:
如何在ListView中禁用滚动条,强制它具有所有内部子项的高度?
儿童没有平等的高度.此外,他们可以在应用程序生命周期中更
<ScrollView>
<StackLayout>
<!-- some buttons and labels -->
<ListView ItemsSource="{Binding Data}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Padding="20">
<!-- Some information -->
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
我测试我的应用程序的平台:Windows 10 UWP.
我也面临同样的问题,我通过在 Scroll View 中使用 Bindable StackLayout 解决了它。
<ScrollView>
<StackLayout BindableLayout.ItemsSource="{Binding ItemSource}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Label Text="{Binding Name}" />
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
Listview已经有一个内置的滚动机制,你永远不应该尝试放入ListView内部ScrollView.
ListView使用UI虚拟化,这意味着它只会在可见视图中创建所需的项目,而不是所有项目.例如,如果您加载240个国家/地区,它实际上只会创建20个国家/地区,当您滚动时,它会创建更多或重复使用现有项目.
通过放入ListView内部ScrollView,您将禁用UI虚拟化.
事实上,Xamarin.Forms滚动没有做任何特别的事情,它是提供UI虚拟化以提高速度的底层平台Android/iOS/Windows的功能.
| 归档时间: |
|
| 查看次数: |
11918 次 |
| 最近记录: |