过滤表情符号时,Android 不允许在“EditText”中使用多行
Posted
技术标签:
【中文标题】过滤表情符号时,Android 不允许在“EditText”中使用多行【英文标题】:Android not allowing multi lines in `EditText` when filtering the emojis 【发布时间】:2022-01-08 03:42:09 【问题描述】:我不允许任何特殊字符和表情符号使用此扩展功能。基本上,除了我们在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_
android:layout_
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">!"#$%&'()*+,-./0123456789:;<=>?|~[\]^_`@ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz</string>
这工作正常,但不允许多行。 知道我们如何支持多行以及过滤表情符号吗?
【问题讨论】:
【参考方案1】:只需在supported_digits
中添加\n
即可。
即,
<string name="supported_digits">!"#$%&'()*+,-./0123456789:;<=>?|~[\]^_`@ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz\n</string>
【讨论】:
以上是关于过滤表情符号时,Android 不允许在“EditText”中使用多行的主要内容,如果未能解决你的问题,请参考以下文章