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

虚拟键盘无法正常用于 TableView 中的条目 - [Android] 说明重现步骤基本信息

如何解决虚拟键盘无法正常用于 TableView 中的条目 - [Android] 说明重现步骤基本信息

说明

我在 TableView 中使用 Entry 并在焦点上显示格式化的值。在这种情况下,在 Entry 中更改焦点时虚拟键盘不显示

重现步骤

  1. 运行示例
  2. 关注第一个条目
  3. 关注第二个条目
  4. 取消对两个视图的关注
  5. 关注第 2 个条目。查看未显示键盘

有时在两个 Entry 都未聚焦时,键盘不会折叠。

基本信息

  • 有问题的版本:4.8.0.1451
  • 平台目标框架:
  • Android:Nexus 6 Marshmallow 6.0 - API 23 模拟器。
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="EntryWithTableView.MainPage">

    <TableView>
        <TableRoot>
            <TableSection >
                <ViewCell >
                    <Grid>
                        <Grid.ColumnDeFinitions>
                            <ColumnDeFinition Width="Auto"/>
                            <ColumnDeFinition Width="Auto"/>
                            <ColumnDeFinition Width="Auto"/>
                        </Grid.ColumnDeFinitions>


                        <Entry Keyboard="Numeric" Focused="entry1_Focused" Unfocused="entry1_Unfocused"
                               x:Name="entry1" Grid.Column="1" WidthRequest="100"/>
                        <Entry Keyboard="Numeric" Focused="entry1_Focused" Unfocused="entry1_Unfocused"
                               Grid.Column="2" x:Name="entry2" WidthRequest="100"/>


                    </Grid>
                </ViewCell>

            </TableSection>
        </TableRoot>

    </TableView>

</ContentPage>

[C#]:

public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        double value = 5;

        private void entry1_Focused(object sender,FocusEventArgs e)
        {
            Entry entry = sender as Entry;

            if(entry != null)
            {
                entry.Text = value.ToString();
            }
        }

        private void entry1_Unfocused(object sender,FocusEventArgs e)
        {
            Entry entry = sender as Entry;

            if (entry != null)
            {
                entry.Text = value.ToString("F");
            }
        }
    } 

解决方法

它是由 TableView 引起的。您可以直接使用 Grid 作为根布局。

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


        <Entry Keyboard="Numeric" Focused="entry1_Focused" Unfocused="entry1_Unfocused"
                               x:Name="entry1" Grid.Column="1" WidthRequest="100" />
        <Entry Keyboard="Numeric" Focused="entry1_Focused" Unfocused="entry1_Unfocused"
                               Grid.Column="2" x:Name="entry2" WidthRequest="100"/>


    </Grid>

如果你想显示一个集合,你可以使用 ListView

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