EditText不接受数字作为输入

时间:2013-08-05 23:35:22

标签: android actionbarsherlock android-edittext

EditText id="price"视图的inputType="numberDecimal"EditText,不接受任何数字但只接受一个小数点。包含id="store"的其他inputType视图未设置Android,但有两个问题。如果视图没有输入,则从键盘输入数字不会执行任何操作。接受数字的唯一方法是紧跟一个字母或另一个数字。我使用默认的onCreateView()键盘。布局在SherlockFragment的子类的EditText方法中膨胀。这可能是SherlockFragmentEditText查看行为的问题吗?我有一个类似的布局用于夸大'SherlockFragmentActivity'的子类,这些<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView style="@style/ProductTextViewTitle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dp" android:text="Product Tile" /> <TableRow android:layout_width="fill_parent" android:layout_height="50dp" android:gravity="center_vertical" android:padding="5dp"> <TextView style="@style/ApolloStyleBold" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.4" android:gravity="center_vertical" android:paddingLeft="5dp" android:text="@string/price"/> <EditText android:id="@+id/price" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.6" android:background="@null" android:hint="@string/price_italic_hint" android:inputType="numberDecimal"/> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="50dp" android:gravity="center_vertical" android:padding="5dp"> <TextView style="@style/ApolloStyleBold" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.4" android:gravity="center_vertical" android:paddingLeft="5dp" android:text="@string/store_name"/> <EditText android:id="@+id/store" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.6" android:background="@null" android:hint="@string/stores_hint" /> </TableRow> </LinearLayout> 视图表现正常。有谁知道可能导致这个问题的原因?

{{1}}

更新

当我在Android v4.3上进行测试时,它有混乱(不接受数字作为输入)行为。但是,我在Android v4.1.2上测试了它,它接受数字作为输入。就EditText行为而言,这两个版本有什么不同吗?

6 个答案:

答案 0 :(得分:2)

事实证明,问题不在于设置的android:inputType,而是视图层次结构中的ViewGroup更高。用于夸大SherlockFragment的布局是一个更复杂布局的孩子。

视图层次结构中的一些父母有一个名为FrameLayout的{​​{1}} ViewGroup的子类。 DragLayer课程实施了一个名为DragLayer的{​​{1}},其方法为InterfaceDragController.DragListener中的此方法使用dispatchKeyEvent(KeyEvent event)表示法,但未调用DragLayer。添加这行代码后,点击键盘上的数字的事件没有被消耗掉,现在一切正常。

答案 1 :(得分:1)

您可以在price edittext

中使用以下代码
android:inputType="number|numberDecimal"  // this means number or decimal

答案 2 :(得分:1)

试试这个。

android:inputType="numberDecimal|numberSigned"

我认为你应该看看here

答案 3 :(得分:0)

尝试将以下代码放在EditText xml:

android:digits="0123456789"

这告诉您的EditText只接受这些数字。当然,你可以根据需要修改它。

答案 4 :(得分:0)

您是否尝试过设置android:numeric="integer|signed|decimal"? 或者,您可以使用KeyListener方法设置setKeyListener(),并强制EditText接受数字/符号/字符。

答案 5 :(得分:0)

您的代码在我的模拟器上正常运行。但是有一个小问题可能是您的问题的答案,请输入键盘字符键顶部数字键的数字。请不要使用计算机键盘的数字键盘输入数字。希望它会对你有所帮助。