【问题标题】:Only show number buttons on Soft Keyboard in Android?仅在 Android 软键盘上显示数字按钮?
【发布时间】:2011-03-22 09:37:28
【问题描述】:

在 Android 的软键盘上,您可以使用 android:inputType="numberDecimal" 将软键盘设置为显示数字而不是 a-z 键盘。但是,如果我只想显示顶部数字行 1 2 3 4 5 6 7 8 9 0 而不是以下以 @ # $ % ... 开头的行,该怎么办?

感谢聆听!

【问题讨论】:

  • 你可以看到我对以下问题的回答stackoverflow.com/questions/39593324/…
  • @AndroidHelp 这个问题是六年前发的,四年前就解决了。今天我不为 Android 开发应用程序。我已经开始使用 SharePoint :)
  • 这个问题还没有答案吗?像 android 的内置键盘一样吗?
  • 这取决于用户使用的第三方键盘应用程序,您只能告诉软键您要使用的数据类型 android:inputType

标签: android android-softkeyboard


【解决方案1】:

来自代码:

et.setInputType(InputType.TYPE_CLASS_NUMBER)

【讨论】:

    【解决方案2】:

    接受的答案对我不起作用(在 OnePlus 3t 和三星 Galaxy S6/S7 手机上测试)。

    此解决方案使用 numberPassword,但覆盖了 EditText 的默认转换方法以显示字符而不是显示点。

    <EditText
        android:id="@+id/userid"
        android:inputType="numberPassword"
        android:maxLength="6"
    />
    
    // Numeric 6 character user id
    EditText input = findViewById(R.id.userid);
    
    // Process input and show characters instead of dots
    input.setTransformationMethod(SingleLineTransformationMethod.getInstance());
    

    【讨论】:

      【解决方案3】:

      接受的答案对我不起作用。它一直显示其他不需要的字符

      我找到了一种方法来完成我想要的行为,方法是将 inputType 更改为 numberPassword,然后禁用密码点

      textInput.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD
      textInput.transformationMethod = SingleLineTransformationMethod()
      

      【讨论】:

        【解决方案4】:

        我已经在 Xamarin 中为 android 实现了这个。所以,我的代码在 C# 中。但校长保持不变。您可以将edittext的属性设置为android:inputType="numberPassword"

        然后在您的代码中将自定义转换方法附加到您的 edittext 视图。

        holder.edtxtQty.TransformationMethod = new HiddenPasswordTransformationMethod();
        
        private class HiddenPasswordTransformationMethod : global::Android.Text.Method.PasswordTransformationMethod
                {
                    public override Java.Lang.ICharSequence GetTransformationFormatted(Java.Lang.ICharSequence source, View view)
                    {
                        return new PasswordCharSequence(source);
                    }
                }
        
            private class PasswordCharSequence : Java.Lang.Object, Java.Lang.ICharSequence
            {
                private char DOT = '\u2022';
        
                private Java.Lang.ICharSequence _source;
                public PasswordCharSequence(Java.Lang.ICharSequence source)
                {
                    _source = source;
                }
        
                public char CharAt(int index)
                {
                    return _source.CharAt(index);
                }
        
                public int Length()
                {
                    return _source.Length();
                }
        
                public Java.Lang.ICharSequence SubSequenceFormatted(int start, int end)
                {
                    return _source.SubSequenceFormatted(start, end); // Return default
                }
        
                public IEnumerator<char> GetEnumerator()
                {
                    return _source.GetEnumerator();
                }
        
                System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
                {
                    return _source.GetEnumerator();
                }
            }
        

        【讨论】:

          【解决方案5】:

          刚刚发布了一个答案here,但为简单起见重新发布:

          Android 似乎添加了我们正在寻找的功能。这是我用于简单 EditText 数字输入的 xml:

              android:inputType="numberPassword"
              android:digits="0123456789"
              android:singleLine="true"
              android:ems="4"
              android:textColor="@android:color/black"
              android:gravity="center"
          

          【讨论】:

          • 这会使文本变成密码,隐藏之前输入的数字。
          • 确实如此。我不知道为什么 G 不提供在没有其他字符的情况下显示 10 键,但也许对于某些开发人员来说,这是制作精简键盘的好方法。当然,如果人们不介意一些无关的字符,“数字”的 inputType 就可以解决问题。对于没有密码样式可见性的 10 键,自定义键盘是解决方案。
          【解决方案6】:

          您只能在代码中添加这一行:

          input.setRawInputType(Configuration.KEYBOARD_12KEY);
          

          这将仅显示数字键盘。

          【讨论】:

          • 不错!当问题被问到时 - 这是不可用的。然而,这是你今天应该做的。谢谢!
          【解决方案7】:
          android:inputType="phone"
          android:digits="1234567890"
          

          是一种选择

          【讨论】:

          • 软键盘上的下一个按钮从此消失。
          【解决方案8】:

          电话号码板是我找到的最接近的东西(在您的EditText 上设置inputType="phone")。

          【讨论】:

          • 谢谢!我会试一试。 BR
          【解决方案9】:

          上次我调查了一下,Android 没有任何好的选择。我最终不得不编写自己版本的类似软键盘的用户界面。

          【讨论】:

          • 因此,为了获得目前市场上使用的最低版本 (1.5) - 我需要编写自己的 SoftKeyboard.java 类。这将是一个挑战:-)
          • 你能告诉我你是怎么做到的吗?因为我也需要这个。
          猜你喜欢
          • 2011-09-22
          • 2017-07-26
          • 2016-03-14
          • 2013-12-16
          • 1970-01-01
          • 1970-01-01
          • 2017-04-19
          • 2012-06-23
          • 2011-12-22
          相关资源
          最近更新 更多