gpt4 book ai didi

c# - Monodroid EditText 输入类型编号检测输入按键

转载 作者:太空宇宙 更新时间:2023-11-03 16:20:50 27 4
gpt4 key购买 nike

我正在尝试制作一个平板电脑应用程序,它有几个设置为 InputType="number"的 edittext 字段,因此它看起来像一个小键盘而不是整个键盘。这显然是因为我只想在字段中输入数字。

但是,我想检测用户是否按下了 ENTER 键。如果他们这样做,我想关闭软键盘——这样比点击那个小的向下箭头按钮来隐藏键盘更容易和更容易访问。我已经为屏幕上接受所有字符(使用默认键盘)的另一个编辑文本框完成了这件事,并且工作正常。但出于某种原因,当我尝试从数字小键盘检测按键时,我无法这样做。

所以这是我似乎无法弄清楚的问题:当我向键盘添加一个监听器时,没有任何效果。屏幕上似乎没有数字。如果我删除监听器,小键盘会再次正常工作,但我无法听到按下的回车键,因此我可以关闭软键盘。

所以,这是我得到的:

          <EditText
android:id="@+id/NumOfAdults_EditText"
android:layout_width="70sp"
android:layout_height="50sp"
android:inputType="number"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:selectAllOnFocus="true"
/>

我是这样听的:

          var editTextBox = FindViewById<EditText>(Resource.Id.NumOfAdults_EditText);
editTextBox.KeyPress += (intentSender, e) =>
{
if (e.Event.Action == KeyEventActions.Down && e.KeyCode == Keycode.Enter)
{
CloseSoftKeyboard();
e.Handled = true;
}
};

所以有人知道为什么当我这样做时,数字输入键停止工作了吗?当 inputType 未设置为数字或电话时,此代码完全可以正常工作。有趣的是,如果我在检测中添加 Make.Toast,我实际上可以看到按键工作(甚至可以显示 Num0-9),但屏幕上似乎没有任何效果。

最佳答案

您可以覆盖 Activity 的 DispatchKeyEvent 方法并放入一些这样的代码。不过,所有按钮按下都会被调用,因此请尽量限制它。

在此示例中,将 etTheIdOfYourEditTextControl 替换为您希望发生此行为的字段的实际名称。

public override bool DispatchKeyEvent(KeyEvent e)
{
if (this.CurrentFocus.Id == Resource.Id.etTheIdOfYourEditTextControl && (e.KeyCode == Keycode.NumpadEnter || e.KeyCode == Keycode.Enter))
{
InputMethodManager imm = GetSystemService(Context.InputMethodService) as InputMethodManager;
if (imm != null)
imm.HideSoftInputFromWindow(this.CurrentFocus.WindowToken, 0);

return true;
}

return base.DispatchKeyEvent(e);
}

关于c# - Monodroid EditText 输入类型编号检测输入按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13962327/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com