在软键盘上显示ankushsachdeva表情符号(Android)

莫托施

我实现了ankushsachdeva表情符号项目,以在聊天应用程序中显示表情符号。当我单击特定的聊天时,我开始我的ChatActivity。如果我随后立即单击我制作的emoji-imageButton,而没有首先扩展键盘,则它看起来像此处的左侧屏幕截图

后记,emojicon-overlay始终正确显示。(正确的屏幕截图)

我希望覆盖图始终如右图所示。有任何想法吗?(提前致谢)

ChatActivity:

private ListView listView; //contains the chatmessages and has a customAdapter 
private EmojiconsPopup popUp; //emojicon-popUp
private EditText editText; //editText to capture text and emojicons
private InputMethodManager inputManager;

@Override
protected void onCreate(Bundle savedInstanceState){
    listView = (ListView) findViewById(R.id.listView);

    //...//

    inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

    popUp = new EmojiconsPopup(listView, getApplicationContext());

    popUp.setSizeForSoftKeyboard();

    popUp.setOnEmojiconClickedListener(new OnEmojiconClickedListener(){
        @Override
        public void onEmojiconClicked(Emojicon emojicon){
            editText.append(emojicon.getEmoji());
        }
    });


    popUp.setOnEmojiconBackspaceClickedListener(new OnEmojiconBackspaceClickedListener(){
        @Override
        public void onEmojiconBackspaceClicked(View v){
            KeyEvent event = new KeyEvent(0, 0, 0, KeyEvent.KEYCODE_DEL, 0, 0, 0, 0, KeyEvent.KEYCODE_ENDCALL);
            editText.dispatchKeyEvent(event);
        }
    });

    popUp.setOnSoftKeyboardOpenCloseListener(new OnSoftKeyboardOpenCloseListener(){
        @Override
        public void onKeyboardOpen(int keyBoardHeight){
        }
        @Override
        public void onKeyboardClose(){
            if (popUp.isShowing())
                popUp.dismiss();
        }
    });
}

//called when the emojicon button is clicked
public void onEmojiButtonClicked(View view){
    if (!popUp.isShowing()){
        inputManager.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
        popUp.showAtBottom(); //show popUp with emojicons
    }else if(popUp.isShowing()){
        popUp.dismiss(); // hide popUp with emojicons
    }
}
安库什

由于没有可靠的方法来知道软键盘的高度,因此库会通过打开键盘并查看视图层次结构的最顶部布局缩小多少来进行计算。

我在showAtBottomPending()库中添加了一个新函数,该函数应该可以解决您的问题。对您的代码进行以下两项更改。

  1. 将您的onEmojiButtonClicked函数更改为

    public void onEmojiButtonClicked(View view){
        if (!popUp.isShowing()){
            popUp.showAtBottomPending(); //show popUp with emojicons after the keyboard is visible
            inputManager.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
        }else if(popUp.isShowing()){
            popUp.dismiss(); // hide popUp with emojicons
        }
    }
    
  2. 而不是通过EmojiconsPopup构造函数传递listView,而是传递视图层次结构的最顶层布局。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何以编程方式在Android软键盘上隐藏/禁用表情符号

来自分类Dev

在Android上显示表情符号键盘?

来自分类Dev

使用自定义表情符号创建软键盘

来自分类Dev

软键盘上的DialogFragment

来自分类Dev

软键盘上的DialogFragment

来自分类Dev

带有表情符号的Android键盘

来自分类Dev

Android软键盘显示在Webview上

来自分类Dev

Android软键盘显示在Webview上

来自分类Dev

在Android中显示软键盘

来自分类Dev

android:不自动显示软键盘

来自分类Dev

Android ScrollView,在软键盘上的操作栏下方

来自分类Dev

在iOS应用程序的键盘上仅显示表情符号的一部分

来自分类Dev

表情符号键盘SwiftUi

来自分类Dev

表情符号键盘SwiftUi

来自分类Dev

删除要从Android键盘输入的表情符号

来自分类Dev

使用popupwindow在Android键盘中实现表情符号

来自分类Dev

显示软键盘时后退键的Android键事件?

来自分类Dev

对话框片段下方显示的Android软键盘

来自分类Dev

Android单击EditText不会显示软键盘

来自分类Dev

Android:在软键盘前面显示对话框

来自分类Dev

如何在Android片段中完美显示软键盘?

来自分类Dev

Android单击EditText不会显示软键盘

来自分类Dev

Android软键盘未在按钮单击上显示

来自分类Dev

对话框片段下方显示的Android软键盘

来自分类Dev

Android:如何在LinearLayout上显示软键盘

来自分类Dev

Android显示@用手机软键盘签名

来自分类Dev

停止 setText() 在 EditText 上显示 Android 软键盘

来自分类Dev

存储并显示表情符号

来自分类Dev

对于输入类型=“ number”,在Chrome软键盘上显示<Go>而不是<Next>