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">!"#$%&'()*+,-./0123456789:;<=>?{|}~[\]^_`@ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz</string>
这工作正常,但不允许多行。
知道我们如何支持多行和过滤表情符号吗?
刚刚在 supported_digits
中添加了 \n
然后它起作用了。
即
<string name="supported_digits">!"#$%&'()*+,-./0123456789:;<=>?{|}~[\]^_`@ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz\n</string>
我不允许使用此扩展功能的任何特殊字符和表情符号。基本上,除了我们传入的 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">!"#$%&'()*+,-./0123456789:;<=>?{|}~[\]^_`@ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz</string>
这工作正常,但不允许多行。 知道我们如何支持多行和过滤表情符号吗?
刚刚在 supported_digits
中添加了 \n
然后它起作用了。
即
<string name="supported_digits">!"#$%&'()*+,-./0123456789:;<=>?{|}~[\]^_`@ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz\n</string>