如何在android中的EditText中检测表情符号

问题描述 投票:6回答:3

我想检测我的EditText是否包含smilie(表情符号)。但我不知道如何检测它们。

android android-edittext detect emoticons
3个回答
18
投票

要在键盘上键入时禁用表情符号,我使用以下过滤器:

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是否包含任何表情符号字符,你可以在Character.getType()接口实现中使用这个原则(android.text.TextWatcher)(在onTextChange()afterTextChanged()方法中)或者例如使用for方法在mMessageEditText.getText()上使用简单的charAt()循环(返回CharSequence类)。


1
投票

如果simile你指的是修辞格,你可以使用.getText()String方法.contains(String)来检查它是否包含字符串“like”或“as”。

片段:

EditText myEditText = (EditText)findViewById(R.id.myEditText);
String input = myEditText.getText();
if(input.contains("like") || input.contains("as"))
{
    //code
}

-1
投票

这取决于您在edittext中实现simleys的方式。如果你正在使用motioons,你可以使用一个技巧。你可以设置一个条件,只要添加一个简单的你可以添加一些类型的关键字到arrayList,每当笑脸是卸妆你可以从arrayList中删除该关键字。最后,您可以通过处理arrayList项来检查该列表是否添加了simley。

对于前...

if(Smiley_added){
arraylist.add(smiley_code,i);
}

if(simley_removed){
arraylist.remove(smileycode,i);
}

if(arraylist.get(i).equals("smileyCode")){
do this....
}
© www.soinside.com 2019 - 2024. All rights reserved.