How to adjust size of Horizontal ListView in Xamarin.Forms?

前端 未结 2 1565
面向向阳花
面向向阳花 2021-01-22 19:14

I see this entry and try it, yes, scroll orientation becomes horizontal.

But, size of view is not adjust to view\'s outline.

Result is like these:

相关标签:
2条回答
  • 2021-01-22 19:53

    The ListView is measured unrotated. If you make it square, it shouldn't bleed out of the screen once rotated.

    0 讨论(0)
  • 2021-01-22 20:03

    You can use a relative layout to adjust the position. This is a XAML example of a horizontal list view I implemented using a rotated vertical list view:

    <?xml version="1.0" encoding="UTF-8"?>
    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 x:Class="ExampleProject.SomePage" >
        <ContentPage.Content>
            <RelativeLayout>
                <ListView x:Name="listView"
                          ItemsSource="{Binding ExampleList}"
                          RowHeight="120"
                          Rotation="270"
                          RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width, Factor=0.5, Constant=-60}"
                          RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width, Factor=-0.5, Constant=60}"
                          RelativeLayout.WidthConstraint="{ConstraintExpression Type=Constant, Constant=120}"
                          RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width, Factor=1}"
                          >
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <ViewCell>
                                <ViewCell.View>
                                    <Label Rotation="90"
                                           TranslationX="120" />
                                </ViewCell.View>
                            </ViewCell>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
                <StackLayout
                    RelativeLayout.XConstraint="{ConstraintExpression Type=Constant, Constant=0}"
                    RelativeLayout.YConstraint="{ConstraintExpression Type=Constant, Constant=120}"
                    RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width, Factor=1}"
                    RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height, Factor=1, Constant=-120}"
                    >
                    <!-- Some content below list view -->
                </StackLayout>
            </RelativeLayout>
        </ContentPage.Content>
    </ContentPage>
    

    This should work on iOS and Android.

    0 讨论(0)
提交回复
热议问题