我注意到谷歌在键盘上添加了一个表情符号快捷键(可能是很久以前在那里,但我只是注意到它:))。我试图从键盘上禁用表情符号快捷方式,并从我在应用程序中添加的图标中召唤这些相同的表情符号。它可行吗?
例如: Facebook Messenger应用程序有一个独立的图标按钮,仅用于表情符号,所以我的想法是使用一个独立的按钮,但使用已经提供的来自Google的表情符号。
到目前为止,我添加了可以点击的独立imageView图标,但是我试图让这个图标召唤谷歌表情符号如果最后一个可以被覆盖。
答案 0 :(得分:1)
首先,将此属性添加到Edittext
android:inputType="textMultiLine"
这就是我在键盘上禁用表情符号的方法
public class EmojiExcludeEditText extends EditText {
public EmojiExcludeEditText(Context context) {
super(context);
init();
}
public EmojiExcludeEditText(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public EmojiExcludeEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
setFilters(new InputFilter[]{emojiExcludeFilter});
}
@Override
public void setFilters(InputFilter[] filters) {
if (filters.length != 0) { //if length == 0 it will here return when init() is called
boolean add = true;
for (InputFilter inputFilter : filters) {
if (inputFilter == emojiExcludeFilter) {
add = false;
break;
}
}
if (add) {
filters = Arrays.copyOf(filters, filters.length + 1);
filters[filters.length - 1] = emojiExcludeFilter;
}
}
super.setFilters(filters);
}
private EmojiExcludeFilter emojiExcludeFilter = new EmojiExcludeFilter();
private class EmojiExcludeFilter implements 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));
if (type == Character.SURROGATE || type == Character.OTHER_SYMBOL) {
return "";
}
}
return null;
}
}
}