【问题标题】:Android Studio 2.2 inputType not workingAndroid Studio 2.2 inputType 不起作用
【发布时间】:2025-12-19 13:40:16
【问题描述】:

我现在已经从 2.1 升级到 Android Studio 2.2,当我在 EditText 小部件上将 inputType 设置为文本时,它不会将我的输入限制为仅文本。这发生在新项目上。我的旧项目这个概念效果很好。 Android Studio 2.2 要求我在旧项目上更新到 Gradle 插件 V 2.2.1 和版本 2.14.1。这是一个 BUG 还是我在我的 XML 文件中设置了错误? 我认为这个问题将通过 AS 2.2.1 build 145-3330264 解决,但没有任何变化。我搜索了 SO 并尝试了与新项目中不存在的 junit 4.12 jar 相关的各种修复,但没有结果。

    <EditText
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:ems="10"
    android:text="Name"
    android:id="@+id/etPW"
    android:layout_marginTop="50dp"
    android:layout_marginLeft="140dp"
    android:textColor="@android:color/black"
    android:textStyle="bold"
    android:textSize="16sp"
    android:inputType="text"
    android:gravity="bottom"/>

【问题讨论】:

  • 您到底希望android:inputType="text" 阻止什么?该输入类型允许任何文本,上次我检查过。
  • @CommonsWare 我希望 ET 字段阻止数字的输入,过去它按预期工作,现在没有那么多。对不起,我没有解释错误
  • android:inputType="text" 不会阻止输入数字。这是EditText 的默认输入类型。您可以输入任何您想要的内容。我不知道阻止输入数字的输入类型。
  • @CommonsWare NO ET 仍然允许我输入数字。我正在使用我的键盘输入值,但确实在模拟器上测试了键盘。我是 7 年级学生,没有真正的设备来测试
  • “不,ET 仍然让我输入数字”——正确。 AFAIK,没有android:inputType 值可以阻止数字的输入。

标签: android android-studio android-edittext


【解决方案1】:

您可以将其添加到您的 XML 中:

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

这不应该允许输入数字(或标点符号,所以添加您想要允许的任何字符)。我测试了它,它对我有用。

【讨论】:

  • 这个语法或概念是什么时候被纳入 Android Studio 的?它工作得很好所以我会投票。因此,如果我理解只允许数字中的字符,那么对于密码字段,我会使用这个而不是正则表达式?
  • @James_Duh 我不确定它可用多久,但它旨在用于数字输入。但是,如果您允许输入文本,那么仍然可以将输入限制为那些指定的“数字”。我不能说你是否应该在正则表达式上使用它,这将是一个设计选择,取决于你知道的某些标准。
  • 好吧,我真的很困惑,因为我的旧项目不需要这行代码,而且 Fedor Tsyganov 从 6 年前的帖子中找到了答案,我不得不想知道谷歌在做什么你的一行很简单但我花了很多时间学习正则表达式,所以你的 cmets 很感激
【解决方案2】:

here 提出了类似的问题。

我将复制答案:

这两个中的任何一个。

XML:

<EditText
    android:id="@+id/editText"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

Java:

EditText state = (EditText) findViewById(R.id.editText);

Pattern ps = Pattern.compile("^[a-zA-Z ]+$");
Matcher ms = ps.matcher(state.getText().toString());
boolean bs = ms.matches();
if (bs == false) {
    if (ErrorMessage.contains("invalid"))
        ErrorMessage = ErrorMessage + "state,";
    else
        ErrorMessage = ErrorMessage + "invalid state,";

【讨论】: