网格内的按钮/标签高度不正确(Xamarin)

cx6n0qe3  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(112)

我在一个网格中有两个按钮,其中一个包含一个较长的文本,不适合一行。带有长文本的按钮似乎获得了不正确的高度,并且某些文本不可见。从我所看到的,高度是一个它会需要如果它是使用屏幕的全宽(与网格外的按钮比较)。标签似乎以类似的方式行事。
代码如下:

<?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="App1.MainPage">

    <StackLayout>
        <Button Text="1 line" />
        <Button Text="Word1 Word2 Word3 Word4 Word5 Word6 Word7 Word8 Word9 Word10 Word11 Word12 Word13 Word14 Word15 Word16 Word17 Word18 Word19 Word20" />
        <Grid BackgroundColor="Cyan">
            <Grid.RowDefinitions>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

            <Button Grid.Row="0" Grid.Column="0" Text="1 line" />
            <Button Grid.Row="0" Grid.Column="1" Text="Word1 Word2 Word3 Word4 Word5 Word6 Word7 Word8 Word9 Word10 Word11 Word12 Word13 Word14 Word15 Word16 Word17 Word18 Word19 Word20" />

            <Label Grid.Row="1" Grid.Column="0" BackgroundColor="Green" Text="1 line" />
            <Label Grid.Row="1" Grid.Column="1" BackgroundColor="Magenta" Text="Word1 Word2 Word3 Word4 Word5 Word6 Word7 Word8 Word9 Word10 Word11 Word12 Word13 Word14 Word15 Word16 Word17 Word18 Word19 Word20" />
        </Grid>
    </StackLayout>

</ContentPage>

结果是这样的:

我是否在网格定义中遗漏了一些东西,以使其中的元素得到正确的测量?

l2osamch

l2osamch1#

尝试在StackLayout中添加Button

<StackLayout>
    <Button Text="1 line" />
    <Button Text="Word1 Word2 Word3 Word4 Word5 Word6 Word7 Word8 Word9 Word10 Word11 Word12 Word13 Word14 Word15 Word16 Word17 Word18 Word19 Word20" />
    <Grid x:Name="grid" BackgroundColor="Cyan">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <StackLayout Grid.Row="0" Grid.Column="0">
            <Button x:Name="btn1"  Text="1 line" VerticalOptions="Start"/>
        </StackLayout>
        <StackLayout Grid.Row="0" Grid.Column="1">
            <Button x:Name="btn2" Grid.Row="0" Grid.Column="1" Text="Word1 Word2 Word3 Word4 Word5 Word6 Word7 Word8 Word9 Word10 Word11 Word12 Word13 Word14 Word15 Word16 Word17 Word18 Word19 Word20 Word21 Word22 Word23 Word24" SizeChanged="btn2_SizeChanged" VerticalOptions="Start"/>
        </StackLayout>
        <Label Grid.Row="1" Grid.Column="0" BackgroundColor="Green" Text="1 line" />
        <Label Grid.Row="1" Grid.Column="1" BackgroundColor="Magenta" Text="Word1 Word2 Word3 Word4 Word5 Word6 Word7 Word8 Word9 Word10 Word11 Word12 Word13 Word14 Word15 Word16 Word17 Word18 Word19 Word20" />
    </Grid>
</StackLayout>

在代码隐藏中,

private void btn2_SizeChanged(object sender, EventArgs e)
{
    grid.RowDefinitions[0].Height = (sender as Button).Height;
}

注意:第二行的标签也可以这样做

相关问题