TextInputEditText 的输入过滤器

inputFilter for TextInputEditText

在我的应用程序中,我有一个 EditText

EditText为货币输入,例如:2.239.99

换句话说,用户可以输入 2 然后 . 然后 23 到这个 EditText

为了实现 EditText 的这种行为,我实现了一个 InputFilter,就像 Mussa 对这个问题的回答 EditText with Currency format 一样。它就像一个魅力。

但后来我想用这样的结构替换我的 EditText

    <android.support.design.widget.TextInputLayout
        android:id="@+id/secondary_currency"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/main_currency"
        tools:hint="Болгарский перец">

        <android.support.design.widget.TextInputEditText
            android:id="@+id/secondary_currency_input"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:textSize="12sp"
            tools:text="348929.00" />
    </android.support.design.widget.TextInputLayout>

现在,我将 InputFilter 应用到 TextInputEditText

当我在 2 之后没有输入 . 时,我感到很惊讶。

为什么我不能在 TextInputEditText 的情况下键入点?如何实现?

我想您不能将 Filter 设置为 TextInputEditText,因为它没有从 EditText class 继承此方法。我没能在 docs 中为 TextInputEditText 找到任何类似的方法 但是您不必专门使用 class 和 TextInputLayout。您可以将 TextInputEditText 替换为带有过滤器的普通 EditText,它会像以前一样工作。

使用当前布局代码。我可以看到您已将 inputType 用作 number,并且您的理想值必须是 十进制

您可以尝试将 inputType 设为 numberDecimal

希望对您有所帮助。

您可以将 InputFilter 添加到 TextInputEditText。

科特林

secondary_currency_input.editableText.filters[0] = yourInputFilter