如何解决虚拟键盘无法正常用于 TableView 中的条目 - [Android] 说明重现步骤基本信息
说明
我在 TableView 中使用 Entry 并在焦点上显示格式化的值。在这种情况下,在 Entry 中更改焦点时虚拟键盘不显示。
重现步骤
有时在两个 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 举报,一经查实,本站将立刻删除。