Android 过滤表情符号时不允许在 `EditText` 中使用多行

Android not allowing multi lines in `EditText` when filtering the emojis

我不允许使用此扩展功能的任何特殊字符和表情符号。基本上,除了我们传入的 allowedChars.

之外,这将不允许任何表情符号、符号和特殊字符
fun EditText.filterEmojisAndDigits(allowedChars: String) {
    filters = arrayOf(InputFilter { source, _, _, _, _, _ ->
        source.filter {
            Character.getType(it) != Character.SURROGATE.toInt() &&
                    Character.getType(it) != Character.OTHER_SYMBOL.toInt() &&
                    allowedChars.contains(it, false)
        }
    })
}

这是我做的EditText

<EditText
        android:id="@+id/etAddComment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/dotted"
        android:gravity="center|start"
        android:hint="@string/enter_comments"
        android:digits="@string/supported_digits"
        android:importantForAutofill="no"
        android:inputType="textMultiLine"
        android:maxLength="950"
        android:maxLines="10"
        tools:text="Test data"
        android:minHeight="@dimen/dp_150"
        android:paddingStart="@dimen/dp_10"
        android:paddingEnd="@dimen/dp_10"
        android:textColor="@color/primary_text"
        android:textColorHint="@color/secondary_text"
        android:textSize="@dimen/sp_16" />

其中 supported_digits 是:

<string name="supported_digits">!"#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?{|}~[\]^_`@ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz</string>

这工作正常,但不允许多行。 知道我们如何支持多行和过滤表情符号吗?

刚刚在 supported_digits 中添加了 \n 然后它起作用了。

<string name="supported_digits">!"#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?{|}~[\]^_`@ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz\n</string>