Xamarin.forms 这是通过Xamarin.Android用户界面的对讲路径吗?

Xamarin.forms 这是通过Xamarin.Android用户界面的对讲路径吗?,xamarin.forms,Xamarin.forms,假设我创建以下共享XAML: <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />

假设我创建以下共享XAML:

        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>

            <Button Grid.Row="0" Text="One" />

            <Grid Grid.Row="1">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>

                <Button Grid.Column="0" Text="Two First" />
                <Button Grid.Column="1" Text="Two Second" />
            </Grid>

            <Button Grid.Row="2" Text="Three" />

        </Grid>

然后我在安卓设备上运行这个,并运行对讲屏幕阅读器。当我在UI中向前滑动时,对讲从按钮“一”移动到按钮“三”,然后移动到按钮“两个第一”和“两个第二”。这与我定义UI的顺序不匹配,所以这是预期的吗?当我运行一个按钮“一个”->“两个第一”->“两个第二”->“三”,当运行同一个UI作为XAMARIN。UWP应用程序,并使用叙述者屏幕读取器。 我发现,如果我更新UI,使UI的某些部分在XAML层次结构中定义的UI深度上保持平衡,就可以避免意外的对讲导航。例如,如果我将按钮“三”包装在网格中,那么我将获得预期的导航路径


我还可以避免意外的对讲导航,如果我为我希望对讲访问的所有内容添加一个TabIndex,但随着应用程序UI的发展,以及我的理解,这需要维护,并非所有类型的Xamarin.Forms控件都支持TabIndex。

不确定这是否是
网格
设计的问题。从共享代码来看,我认为
网格
可能会将第二个
设置为低优先级。因为第二个
分别定义

如果这就是
网格设计的逻辑。您可以尝试以相同的优先级定义

代码如下:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <Button Grid.Row="0"
            Grid.ColumnSpan="2"
            Text="One" />

    <Button Grid.Row="1"
            Grid.Column="0"
            Text="Two First" />

    <Button Grid.Row="1"
            Grid.Column="1"
            Text="Two Second" />

    <Button Grid.Row="2"
            Grid.Column="0"
            Grid.ColumnSpan="2"
            Text="Three" />
</Grid>

嗨,你解决了吗?如果是这样,记得有时间在这里分享解决方案:-)