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

滚动型ScrollView

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

PDF用于离线使用
示例代码:

让我们知道你对此的感受

最后更新: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 visible

scroll.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;
};

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值