我的应用程序的目标API是27(奥利奥)。我的应用程序使用EditText控件进行文本输入。但是,从Google键盘,现在可以插入GIF。在这种情况下,我的应用程序接收ACTION_SEND意图,从键盘插入gif,这是为完全不同的功能实现的。因此,它只会混淆整个应用流程,并使用户完全不同的活动。
我希望我的EditText只接受文本,不允许用户在那里插入任何gif。如何配置EditText以停止允许从键盘插入GIFS?
对于EditText,请设置以下选项。
android:privateImeOptions="disableSticker=true;disableGifKeyboard=true"
示例:
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:privateImeOptions="disableSticker=true;disableGifKeyboard=true"/>
测试三星galaxy S9 +三星键盘,android 9
和魅族Pro6 GBoard,android 6.作品完美
要修复GBoard,请创建您自己的编辑文本并覆盖方法“onCreateInputConnection(...)”,如下所示:
public class NoGifEditText extends AppCompatEditText {
@Override
public InputConnection onCreateInputConnection(EditorInfo editorInfo) {
final InputConnection ic = super.onCreateInputConnection(editorInfo);
EditorInfoCompat.setContentMimeTypes(editorInfo, new String[]{"image/*", "image/png", "image/gif", "image/jpeg"});
return InputConnectionCompat.createWrapper(ic, editorInfo,
(inputContentInfo, flags, opts) -> {
Toast.makeText(getContext(), "No gif support", Toast.LENGTH_SHORT).show();
return true;
});
}
}
说明:输入compat句柄插入所选mimetypes(“image / *”,“image / png”,“image / gif”,“image / jpeg”)并生成事件。你在下面的块中捕获这个事件,只显示消息,不支持gif。
{
Toast.makeText(getContext(), "No gif support", Toast.LENGTH_SHORT).show();
return true;
}
要修复三星键盘,只需在编辑xml中添加这一行
机器人:privateImeOptions = “disableSticker = TRUE; disableGifKeyboard =真”