4

我有一个 EditText,我只允许字符 $0123456789。

一切正常,除了当我按下数字 4(在虚拟或硬件键盘上)时,它会打印一个美元符号 ($)。

为什么要这样做?

这是我的 EditText 的 XML:

<EditText
    android:id="@+id/amount_text"
    style="@style/textbox"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@null"
    android:cursorVisible="false"
    android:digits="$0123456789."
    android:gravity="left|center_vertical"
    android:hint="@string/amount_hint"
    android:inputType="textPhonetic|numberDecimal" />

次要问题:

mAmountTxt.setKeyListener(DigitsKeyListener.getInstance(false, true));

这实现了我想要的(无 $)。但是,它将虚拟键盘更改为我不想要的。我想要带有大数字按钮的电话键盘。

4

2 回答 2

1

首先,我 100% 确定它与您的 EditText xml 没有直接关系。我已经在 Emu 2.1、Emu 4.0、Emu 4.1 和 Real Phone 4.0 中尝试过您的 xml,并且在每个版本中都运行良好。

其他可能的原因:

  • 它可能是模拟器 - 他们有时是错误的。您可以尝试制作模拟器的新实例并进行测试吗?或者,尝试重新启动 adb?

  • 它可能是程序化的东西。你会做任何更换或类似的事情吗?

  • 我不确定这是做什么的:style="@style/textbox"


其次,要使键盘布局看起来像电话,请使用 this 而不是 setKeyListener

mAmountTxt.setInputType(InputType.TYPE_CLASS_PHONE);
于 2012-12-03T03:06:20.177 回答
0

你写了:

I want the phone keyboard with the big number buttons.

设置inputType为:

android:inputType="phone"

代替:

 android:inputType="textPhonetic|numberDecimal"
于 2012-11-27T07:30:38.403 回答