6

具有不接受任何数字但只接受一个小数点的EditText视图。另一个视图没有设置,但有两个问题。如果视图没有输入,则从键盘输入数字不会执行任何操作。接受一个数字的唯一方法是它紧跟在一个字母或另一个数字之后。我正在使用默认键盘。布局在的子类的方法中被膨胀。这可能是 a 中的视图行为的问题吗?我有一个类似的布局,用于扩展“SherlockFragmentActivity”的子类,并且这些视图表现正常。有谁知道可能导致此问题的原因是什么?id="price"inputType="numberDecimal"EditTextid="store"inputTypeAndroidonCreateView()SherlockFragmentEditTextSherlockFragmentEditText

<?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>

更新

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

4

6 回答 6

4

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

视图层次结构中的一些父级有一个FrameLayoutViewGroup 的子类,称为DragLayer. 该类DragLayer实现了一个Interface被调用DragController.DragListener的方法dispatchKeyEvent(KeyEvent event)。这个方法在DragLayer使用@Override符号但是没有调用super.dispatchKeyEvent(event). 添加这行代码后,单击键盘上的数字的事件没有被消耗,现在一切正常。

于 2013-08-22T05:38:00.337 回答
1

您可以在价格编辑文本中使用以下代码

android:inputType="number|numberDecimal"  // this means number or decimal
于 2013-08-05T23:43:02.737 回答
1

尝试这个。

android:inputType="numberDecimal|numberSigned"

我想你应该看看这里

于 2013-08-13T13:28:00.327 回答
0

您的代码在我的模拟器上运行良好。但是有一个小东西可能会解决您的问题,请从键盘字符键顶部的数字键输入数字。请不要使用计算机键盘的数字键盘输入数字。希望它会帮助你。

于 2013-08-08T05:10:07.300 回答
0

尝试将下面的代码放在您的 EditText xml 上:

android:digits="0123456789"

这告诉您的 EditText 只接受这些数字。当然,您可以将其修改为您需要的任何内容。

于 2013-08-06T23:01:07.243 回答
0

你试过设置android:numeric="integer|signed|decimal"吗?或者,您可以设置KeyListenerwithsetKeyListener()方法,并强制EditText接受数字/标点/字符。

于 2013-08-08T00:34:24.613 回答