翻译视图后,它应该滚动完整内容,如果不是,它应该裁剪隐藏部分中的内容

问题描述

查询是此帖子的延续Scroll view scrolling not works when the it is translated in y position such that bottom part gets hidden in xamarin forms

现在滚动视图工作正常,在某些情况下我曾经定义如下,我可以使用滚动视图的绝对布局的内容或直接使用。

当直接在下面的代码片段中使用时,通过设置布局边界翻译后,所有的框视图都排列在指定的高度。

但以前它会在翻译后在底部裁剪。不使用滚动视图时,我需要相同的行为。如何实现这一目标。

        <AbsoluteLayout x:Name="layout" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Grid.Row="1">

         <Grid  x:Name="scrollView" AbsoluteLayout.LayoutFlags="SizeProportional" AbsoluteLayout.LayoutBounds="0,1,1" >
            <Grid.RowDeFinitions>
                <RowDeFinition Height="*"/>
                <RowDeFinition Height="*"/>
                <RowDeFinition Height="*"/>
                <RowDeFinition Height="*"/>
                <RowDeFinition Height="*"/>
                <RowDeFinition Height="*"/>
                <RowDeFinition Height="*"/>
                <RowDeFinition Height="*"/>
                <RowDeFinition Height="*"/>
                <RowDeFinition Height="*"/>
            </Grid.RowDeFinitions>

            <BoxView Grid.Row="0" BackgroundColor="Red"></BoxView>
            <BoxView Grid.Row="1" BackgroundColor="Black"></BoxView>

            <BoxView Grid.Row="2" BackgroundColor="Blue"></BoxView>
            <BoxView Grid.Row="3" BackgroundColor="Gray"></BoxView>
            <BoxView Grid.Row="4" BackgroundColor="Green"></BoxView>
            <BoxView Grid.Row="5" BackgroundColor="Red"></BoxView>
            <BoxView Grid.Row="6" BackgroundColor="Black"></BoxView>

            <BoxView Grid.Row="7" BackgroundColor="Blue"></BoxView>
            <BoxView Grid.Row="8" BackgroundColor="Gray"></BoxView>
            <BoxView Grid.Row="9" BackgroundColor="Green"></BoxView>
        </Grid>

Cropped at the bottom

Arranged in that height

在这种情况下,当我设置布局边界时,它会按照第二张图片进行排列,但我需要按照第一张图片进行排列。

解决方法

如果您没有 ScrollView,就像您在 this question 中那样,那么只需将 1 作为 Rectangle 构造函数的最后一个参数。

我不知道您的其余代码是什么样子的,但是您可以使用不同的 AbsoluteLayout.LayoutBounds 绑定不同的矩形。例如,在没有 ScrollView 的情况下,您可以这样放置

        <AbsoluteLayout x:Name="layout" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Grid.Row="1">
         <Grid  AbsoluteLayout.LayoutBounds="{Binding rectNoScroll}"...
rectNoScroll = new Rectangle(0,250,1,1);

当你有 ScrollView 时,你可以像 here 那样做。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...