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



我不允许任何特殊字符和表情符号使用此扩展函数。基本上,除了我们在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 abcdefghijklmnopqrstuvwxyzn</string>

最新更新