我希望能检测我的
EditText
中是否包含表情符号(emoticons),但我不知道如何检测它们。EditText
中是否包含表情符号(emoticons),但我不知道如何检测它们。我使用以下过滤器来在键盘上输入时禁用表情符号:
InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
int type = Character.getType(source.charAt(i));
//System.out.println("Type : " + type);
if (type == Character.SURROGATE || type == Character.OTHER_SYMBOL) {
return "";
}
}
return null;
}
};
mMessageEditText.setFilters(new InputFilter[]{filter});
如果您只需要检测EditText中是否包含任何表情符号字符,您可以在android.text.TextWatcher
接口的实现中使用此原则(Character.getType()
) (在onTextChange()
或afterTextChanged()
方法中),或者例如使用mMessageEditText.getText()
(返回CharSequence类)上的简单for
循环和charAt()
方法。
EditText myEditText = (EditText)findViewById(R.id.myEditText);
String input = myEditText.getText();
if(input.contains("like") || input.contains("as"))
{
//code
}
这取决于您在edittext中实现表情符号的方式。如果您正在使用动画,可以使用一个技巧来实现。您可以设置一个条件,每当添加一个表情符号时,您可以向arrayList添加某种关键字,每当删除表情符号时,您可以从arrayList中删除该关键字。最后,您可以通过处理arrayList项来检查该列表是否已添加该表情符号。
例如...
if(Smiley_added){
arraylist.add(smiley_code,i);
}
if(simley_removed){
arraylist.remove(smileycode,i);
}
if(arraylist.get(i).equals("smileyCode")){
do this....
}