Xamarin.Froms 用户界面——控件——布局——ScrollView

来源:互联网 发布:php教程做表格 编辑:程序博客网 时间:2024/06/07 06:21

滚动型ScrollView

使用ScrollView显示不能适合一个屏幕的布局,并且内容为键盘腾出空间。

PDF用于离线使用
  • 下载PDF
示例代码:
  • 布局
  • BusinessTumble示例

让我们知道你对此的感受

最后更新:2016年4月

ScrollView包含布局并使它们能够在屏幕之外滚动。ScrollView还用于允许视图在键盘显示时自动移动到屏幕的可见部分。

本文包括:

  • 目的 - 使用目的ScrollView及时间。
  • 用法 - 如何ScrollView在实践中使用。
  • 属性 - 可以读取和修改的公共属性。
  • 方法 - 可以调用滚动视图的公共方法。
  • 事件 - 可用于监听视图状态中的更改的事件。

目的

ScrollView可以用于确保较小的视图在较小的手机上显示良好。例如,在iPhone 6上工作的布局可能会在iPhone 4上被裁剪。使用ScrollView将允许布局的剪辑部分显示在较小的屏幕上。

用法

注意ScrollView不应该嵌套。另外,ScrollViews不应该嵌套与提供滚动的其他控件,如ListViewWebView

ScrollView公开Content可以设置为单个视图或布局的属性。考虑一个具有非常大的boxView的布局的例子,其次是Entry

<ContentPage.Content>    <ScrollView>        <StackLayout>            <BoxView BackgroundColor="Red" HeightRequest="600" WidthRequest="150" />            <Entry />        </StackLayout>    </ScrollView></ContentPage.Content>

在C#中:

var scroll = new ScrollView();Content = scroll;var stack = new StackLayout();stack.Children.Add(new BoxView { BackgroundColor = Color.Red,   HeightRequest = 600, WidthRequest = 600 });stack.Children.Add(new Entry());

在用户向下滚动之前,只有BoxView可见:

请注意,当用户开始在其中输入文本时Entry,视图滚动以使其在屏幕上可见:

属性

ScrollView具有以下属性:

  • 内容 - 获取或设置要显示的视图ScrollView
  • ContentSize - 只读,获取内容的大小,其宽度和高度分量。这是一个可绑定的属性
  • 取向 -这是一个ScrollOrientation,这是可以被设置为一个枚举HorizontalVerticalBoth
  • ScrollX - 只读,获取X维当前的滚动位置。
  • ScrollY - 只读,在Y维度中获取当前滚动位置。

方法

ScrollView提供了一种ScrollToAsync方法,可用于使用坐标滚动视图或通过指定应显示的特定视图。

当使用坐标时,指定xy坐标,以及一个布尔值,表示滚动是否应该是动画的:

scroll.ScrollToAsync(0, 150, true); //scrolls so that the position at 150px from the top is visiblescroll.ScrollToAsync(label, ScrollToPosition.Start, true); //scrolls so that the label is at the start of the list

当滚动到特定元素时,ScrollToPosition枚举会指定元素在视图中的显示位置:

  • 中心 - 将元素滚动到视图的可见部分的中心。
  • 结束 - 将元素滚动到视图的可见部分的末尾。
  • MakeVisible - 滚动元素,使其在视图中可见。
  • 开始 - 将元素滚动到视图的可见部分的开头。

IsAnimated属性指定视图将如何滚动。当设置为true时,将使用平滑的动画,而不是立即将内容移动到视图中。

活动

ScrollView只暴露一个事件ScrolledScrolled当视图完成滚动时,它被提升。事件处理程序Scrolled需要ScrolledEventArgs,它具有ScrollXScrollY性能。以下演示如何使用当前滚动位置更新标签ScrollView

Label label = new Label { Text = "Position: " };ScrollView scroll = new ScrollView();scroll.Scrolled += (object sender, ScrolledEventArgs e) => {    label.Text = "Position: " + e.ScrollX + " x " + e.ScrollY;};

请注意,由于在列表末尾滚动时的弹跳效果,滚动位置可能为负。

阅读全文
0 0