【问题标题】:Entry and Buttons are not focused in xamarin forms条目和按钮不集中在 xamarin 表单中
【发布时间】:2021-04-01 11:40:13
【问题描述】:

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

下面是我的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>

【问题讨论】:

  • 我们无法调试我们看不到的代码
  • 发布您的 xaml 以进行检查。看起来有些元素正在覆盖可聚焦元素并捕获输入。您可以将 InputTransparent="True" 设置为那些,这样它们就不会弄乱您的条目和按钮..
  • 我也发布了我的 xaml 代码

标签: xaml xamarin


【解决方案1】:

但是这里的条目(文本框)没有聚焦,并且按钮按下也不起作用。如果我删除一些图像和堆栈布局,那么它工作正常。

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

 <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>

【讨论】:

  • 非常感谢@cherry Bu -MSFT。它解决了我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-02
  • 1970-01-01
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
相关资源
最近更新 更多