微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

条目和按钮不集中在 xamarin 表单中

如何解决条目和按钮不集中在 xamarin 表单中

我正在使用 xamarin android 开发一个 android 应用程序。我正在使用 xaml 设计一页。在我的屏幕上,我有 5 张图片。它基本上是一个登录屏幕。但是这里 entry(textBox) 没有聚焦并且按钮按下也不起作用。如果我删除了一些图像和堆栈布局,那么它就可以正常工作。

下面是我的xaml

 <StackLayout>
    <Grid>
        <Grid.ColumnDeFinitions>
            <ColumnDeFinition Width="745"/>
            <ColumnDeFinition Width="*"/>
        </Grid.ColumnDeFinitions>

        <StackLayout Orientation="Horizontal" HorizontalOptions="Center" Spacing="10" Grid.Column="0" >
            <Grid Grid.Column="0"  ColumnSpacing="80" RowSpacing="0">
                <Grid.ColumnDeFinitions>
                    <ColumnDeFinition Width="*"/>
                    <ColumnDeFinition Width="*"/>
                </Grid.ColumnDeFinitions>
                <Grid.RowDeFinitions>
                    <RowDeFinition Height="100"/>
                    <RowDeFinition Height="100"/>
                    <RowDeFinition Height="250"/>
                </Grid.RowDeFinitions>
                <Image Source="image1.png" Margin="0" Grid.Row="0" Grid.Column="0"  HorizontalOptions="StartAndExpand" HeightRequest="100" WidthRequest="200" />
                <Image Source="image3.png"  Margin="0"  Grid.Row="0" Grid.Column="1"  HorizontalOptions="StartAndExpand" HeightRequest="100" WidthRequest="200" />
                <Label x:Name="lblTitle"   FontSize="22" TextColor="Blue" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"
                           FontAttributes="Bold"  VerticalOptions="Center" 
                           HorizontalTextAlignment="Center" Text="Title goes here"/>


                <Image Source="image3.png" Grid.Row="2" Grid.Column="0"  HorizontalOptions="StartAndExpand" HeightRequest="500" WidthRequest="500" />
                <StackLayout Grid.Row="2" Grid.Column="1" InputTransparent="False" >
                    <Grid>
                        <Grid.ColumnDeFinitions>
                            <ColumnDeFinition Width="100"/>
                            <ColumnDeFinition Width="100"/>

                        </Grid.ColumnDeFinitions>
                        <Grid.RowDeFinitions>
                            <RowDeFinition Height="30"/>
                            <RowDeFinition Height="40"/>
                            <RowDeFinition Height="30"/>
                            <RowDeFinition Height="40"/>
                            <RowDeFinition Height="40"/>
                            <RowDeFinition Height="40"/>

                        </Grid.RowDeFinitions>
                        <Label  FontSize="15" TextColor="Blue"  Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2"
                           FontAttributes="Bold"  VerticalOptions="Center" 
                           HorizontalTextAlignment="Start" Text="User Name"/>
                        <Frame   BorderColor="DodgerBlue" CornerRadius="0" Padding="0" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2">
                            <Entry x:Name="txtUsername" FontFamily="{StaticResource UbuntuRegularFontFamily}"  Placeholder="Enter Username"  HorizontalOptions="FillAndExpand" Text="" FontSize="15"/>
                        </Frame>
                        <Label  FontSize="15" TextColor="Blue"  Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="2" 
                           FontAttributes="Bold"  VerticalOptions="Center" 
                           HorizontalTextAlignment="Start" Text="Password"/>
                        <Frame   BorderColor="DodgerBlue" CornerRadius="0" Padding="0" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="2">
                            <Entry x:Name="txtPassword" FontFamily="{StaticResource UbuntuRegularFontFamily}"  Placeholder="Enter Password" IsPassword="True"  HorizontalOptions="FillAndExpand" Text=""  FontSize="15"/>

                        </Frame>
                        <Button x:Name="btnlogin" Grid.Row="4" Grid.Column="0" Text="LOGIN" WidthRequest="100" HeightRequest="40" ></Button>
                        <Button x:Name="btnCancel" Grid.Row="4" Grid.Column="1" Text="CANCEL" WidthRequest="100" HeightRequest="40" ></Button>
                       
                    </Grid>

                </StackLayout>
            </Grid>
        </StackLayout>
        <StackLayout Grid.Row="3" InputTransparent="True">
            <Grid>
                <Grid.ColumnDeFinitions>
                    <ColumnDeFinition Width="150"/>
                    <ColumnDeFinition Width="150"/>
                    <ColumnDeFinition Width="100"/>

                </Grid.ColumnDeFinitions>
                <Grid.RowDeFinitions>
                    <RowDeFinition Height="*"/>
                    <RowDeFinition Height="*"/>


                </Grid.RowDeFinitions>
                <Image Source="image4.png" Margin="0" Grid.Row="1"  Grid.Column="0"  HorizontalOptions="StartAndExpand" HeightRequest="400" WidthRequest="250" />
                <Label    FontSize="25" TextColor="Black" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2"
                           FontAttributes="Bold"  VerticalOptions="Center" 
                           HorizontalTextAlignment="Center" Text="year "/>
                <Label  FontSize="25" TextColor="Black" Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2"
                           FontAttributes="Bold"  VerticalOptions="Center" 
                           HorizontalTextAlignment="Center" Text="company name goes here"/>


            </Grid>
        </StackLayout>
        <StackLayout Grid.RowSpan="1"  Grid.Column="1" InputTransparent="True">
            <Image Source="image5.png" Margin="0"  
                    />
        </StackLayout>

    </Grid >
</StackLayout>

解决方法

但是这里 entry(textbox) 没有聚焦并且按钮按下也不起作用。如果我删除了一些图像和堆栈布局,那么它就可以正常工作。

我测试你的代码,发现你把下面的代码放错了地方。

 <StackLayout Grid.Row="3">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="150" />
                                <ColumnDefinition Width="150" />
                                <ColumnDefinition Width="100" />

                            </Grid.ColumnDefinitions>

                            <Image
                                Grid.Row="1"
                                Grid.Column="0"
                                Margin="0"
                                HeightRequest="400"
                                HorizontalOptions="StartAndExpand"
                                Source="check.png"
                                WidthRequest="250" />
                            <Label
                                Grid.Row="1"
                                Grid.Column="1"
                                FontAttributes="Bold"
                                FontSize="25"
                                HorizontalTextAlignment="Center"
                                Text="year "
                                TextColor="Black"
                                VerticalOptions="Center" />
                            <Label
                                Grid.Row="1"
                                Grid.Column="2"
                                FontAttributes="Bold"
                                FontSize="25"
                                HorizontalTextAlignment="Center"
                                Text="company name goes here"
                                TextColor="Black"
                                VerticalOptions="Center" />


                        </Grid>
                    </StackLayout>

您只定义了 3 个 RowDefinitions,但您使用了 Grid.Row="3" 上面的代码。

 <StackLayout
                Grid.Column="0"
                HorizontalOptions="Center"
                Orientation="Horizontal"
                Spacing="10">
                <Grid
                    Grid.Column="0"
                    ColumnSpacing="80"
                    RowSpacing="0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="100" />
                        <RowDefinition Height="100" />
                        <RowDefinition Height="250" />
                        <RowDefinition Height="100" />
                    </Grid.RowDefinitions>

请看下面的代码,我用的是我的图片源。

<StackLayout>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

            <StackLayout
                Grid.Column="0"
                HorizontalOptions="Center"
                Orientation="Horizontal"
                Spacing="10">
                <Grid
                    Grid.Column="0"
                    ColumnSpacing="80"
                    RowSpacing="0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="100" />
                        <RowDefinition Height="100" />
                        <RowDefinition Height="250" />
                        <RowDefinition Height="100" />
                    </Grid.RowDefinitions>
                    <Image
                        Grid.Row="0"
                        Grid.Column="0"
                        Margin="0"
                        HeightRequest="100"
                        HorizontalOptions="StartAndExpand"
                        Source="c1.png"
                        WidthRequest="200" />
                    <Image
                        Grid.Row="0"
                        Grid.Column="1"
                        Margin="0"
                        HeightRequest="100"
                        HorizontalOptions="StartAndExpand"
                        Source="c10.png"
                        WidthRequest="200" />
                    <Label
                        x:Name="lblTitle"
                        Grid.Row="1"
                        Grid.Column="0"
                        Grid.ColumnSpan="2"
                        FontAttributes="Bold"
                        FontSize="22"
                        HorizontalTextAlignment="Center"
                        Text="Title goes here"
                        TextColor="Blue"
                        VerticalOptions="Center" />


                    <Image
                        Grid.Row="2"
                        Grid.Column="0"
                        HeightRequest="500"
                        HorizontalOptions="StartAndExpand"
                        Source="c11.png"
                        WidthRequest="500" />
                    <StackLayout
                        Grid.Row="2"
                        Grid.Column="1"
                        InputTransparent="False">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="100" />
                                <ColumnDefinition Width="100" />

                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="30" />
                                <RowDefinition Height="40" />
                                <RowDefinition Height="30" />
                                <RowDefinition Height="40" />
                                <RowDefinition Height="40" />
                                <RowDefinition Height="40" />

                            </Grid.RowDefinitions>
                            <Label
                                Grid.Row="0"
                                Grid.Column="0"
                                Grid.ColumnSpan="2"
                                FontAttributes="Bold"
                                FontSize="15"
                                HorizontalTextAlignment="Start"
                                Text="User Name"
                                TextColor="Blue"
                                VerticalOptions="Center" />
                            <Frame
                                Grid.Row="1"
                                Grid.Column="0"
                                Grid.ColumnSpan="2"
                                Padding="0"
                                BorderColor="DodgerBlue"
                                CornerRadius="0">
                                <Entry
                                    x:Name="txtUsername"
                                    FontSize="15"
                                    HorizontalOptions="FillAndExpand"
                                    Placeholder="Enter Username"
                                    Text="" />
                            </Frame>
                            <Label
                                Grid.Row="2"
                                Grid.Column="0"
                                Grid.ColumnSpan="2"
                                FontAttributes="Bold"
                                FontSize="15"
                                HorizontalTextAlignment="Start"
                                Text="Password"
                                TextColor="Blue"
                                VerticalOptions="Center" />
                            <Frame
                                Grid.Row="3"
                                Grid.Column="0"
                                Grid.ColumnSpan="2"
                                Padding="0"
                                BorderColor="DodgerBlue"
                                CornerRadius="0">
                                <Entry
                                    x:Name="txtPassword"
                                    FontSize="15"
                                    HorizontalOptions="FillAndExpand"
                                    IsPassword="True"
                                    Placeholder="Enter Password"
                                    Text="" />

                            </Frame>
                            <Button
                                x:Name="btnlogin"
                                Grid.Row="4"
                                Grid.Column="0"
                                HeightRequest="40"
                                Text="LOGIN"
                                WidthRequest="100" />
                            <Button
                                x:Name="btnCancel"
                                Grid.Row="4"
                                Grid.Column="1"
                                HeightRequest="40"
                                Text="CANCEL"
                                WidthRequest="100" />

                        </Grid>

                    </StackLayout>

                    <StackLayout Grid.Row="3"  InputTransparent="True">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="150" />
                                <ColumnDefinition Width="150" />
                                <ColumnDefinition Width="100" />

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


                            </Grid.RowDefinitions>
                            <Image
                                Grid.Row="1"
                                Grid.Column="0"
                                Margin="0"
                                HeightRequest="400"
                                HorizontalOptions="StartAndExpand"
                                Source="check.png"
                                WidthRequest="250" />
                            <Label
                                Grid.Row="1"
                                Grid.Column="1"
                                Grid.ColumnSpan="2"
                                FontAttributes="Bold"
                                FontSize="25"
                                HorizontalTextAlignment="Center"
                                Text="year "
                                TextColor="Black"
                                VerticalOptions="Center" />
                            <Label
                                Grid.Row="1"
                                Grid.Column="2"
                                Grid.ColumnSpan="2"
                                FontAttributes="Bold"
                                FontSize="25"
                                HorizontalTextAlignment="Center"
                                Text="company name goes here"
                                TextColor="Black"
                                VerticalOptions="Center" />


                        </Grid>
                    </StackLayout>

                </Grid>
            </StackLayout>

            <StackLayout
                Grid.RowSpan="1"
                Grid.Column="1"
                InputTransparent="True">
                <Image Margin="0" Source="image5.png" />
            </StackLayout>

        </Grid>
    </StackLayout>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。