【问题标题】:Disable keys on the default Android keyboard禁用默认 Android 键盘上的按键
【发布时间】:2023-03-31 14:35:02
【问题描述】:

我的 Xamarin 应用程序主页上有一个 Entry 控件,用于输入一个人的年龄。我已将键盘设置为Keyboard="Numberic"

但是,这会引起混淆,因为至少对于 Android,“完成”键在退格键下方,但在设置键和 .- 键上方。这意味着当用户尝试按“完成”时,他们忘记了按键不在您期望的右下角,并且他们一直错误地按下设置键并进入他们的手机设置,有点烦人,可以理解。

是否可以禁用设置键和 .- 键,或者交换它们的位置?我不认为这是可能的,那么在这种情况下,有没有其他方法可以解决这个问题?

截图澄清我的意思 - 可以移动或禁用带有设置 cog 和“.-”的键,以防止用户打开他们的手机设置并输入负数/十进制数?

【问题讨论】:

  • 您始终可以禁用或去除放置按钮值的 EditText 字段中的字符。至于禁用设置或更改按钮的顺序,我不太确定可以使用系统键盘完成,也许您需要一个自定义键盘来实现该类型的功能
  • @ViaTech 你能举一个字符禁用/剥离的例子吗?这是我的第一个 Xamarin 项目,所以我仍在掌握它。
  • 嗯...Xamarin,C#...等一下,我需要做一些研究
  • android 的键盘由操作系统管理,每个设备可以有不同的键盘外观和行为。如果您尝试something like proposed here and create your own keyboard app pattern 会怎样?
  • 嘿,请注意...我试图编辑这篇文章以在标签中包含 C#,但我不小心写了“C++”,所以我确信它会被拒绝。请将 C# 添加到标签中,这样我就不必更改被拒绝的建议(因为它应该被拒绝,因为 xamarin 使用 c#)。我觉得添加这个标签会改善建议和可搜索性......当我第一次阅读所有内容时我正在考虑 Java,因为它是 Android 的基础,所以我觉得通过标签进行澄清最适合这个问题

标签: c# android xamarin xamarin.forms android-softkeyboard


【解决方案1】:

我没有使用过 C#,也从未使用过 Android,但是从字符串中删除字符的想法对于大多数语言来说通常都很简单。

基于我们在 cmets 的小讨论,以及一些研究;我相信这就是您要从用户输入进入您的应用程序的 EditText 字段中删除不需要的值的方法:

var editText = FindViewById<EditText> (Resource.Id.editText);

editText.TextChanged += (object sender, Android.Text.TextChangedEventArgs et) => {
    //step 1 grab editText value
    String newString = et.Text.ToString(); 

    //step 2 replace unwanted characters (currently '.' & '-')
    newString = newString.Replace(".", "").Replace("-", "");

    //step 3 set the editText field to the updated string
    editText.Text = newString;

};

资源: https://github.com/xamarin/recipes/tree/master/Recipes/android/controls/edittext/capture_user_input_text

我还没有找到一种方法来更改 Android 的默认键盘,以便您可以删除不需要的键(即设置键)或重新排序它们,所以我仍然在想,如果您决定必须这样做,您需要为应用程序构建自定义键盘。

【讨论】:

    猜你喜欢
    • 2015-05-02
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多