Skip to content

Popup doesnt work in New android devices #40

Open

Description

@vinayjayaram

I am working on this code on my Moto X device. It doesn't hide the keyboard. I shows smiley above the keyboard. Request you to fix the issue ASAP
screenshot_2015-10-07-11-34-14

Activity

  1. Jaymo commented on Oct 7, 2015

    @Jaymo
  2. vinayjayaram commented on Oct 7, 2015

    @vinayjayaram
    Author

    @Jaymo Tried your code, But did not work, It is having same issue

  3. Jaymo commented on Oct 7, 2015

    @Jaymo

    Kindly share the code you use to toggle the emoji and keyboard

  4. vinayjayaram commented on Oct 7, 2015

    @vinayjayaram
    Author

    @Jaymo
    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.inputmethod.InputMethodManager;
    import android.widget.ArrayAdapter;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.PopupWindow.OnDismissListener;

    import github.ankushsachdeva.emojicon.EmojiconEditText;
    import github.ankushsachdeva.emojicon.EmojiconGridView.OnEmojiconClickedListener;
    import github.ankushsachdeva.emojicon.EmojiconsPopup;
    import github.ankushsachdeva.emojicon.EmojiconsPopup.OnEmojiconBackspaceClickedListener;
    import github.ankushsachdeva.emojicon.EmojiconsPopup.OnSoftKeyboardOpenCloseListener;
    import github.ankushsachdeva.emojicon.emoji.Emojicon;

    public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView lv = (ListView) findViewById(R.id.lv);
        final ArrayAdapter<String> mAdapter = new ArrayAdapter<>(this, R.layout.listview_row_layout);
        lv.setAdapter(mAdapter);
        final EmojiconEditText emojiconEditText = (EmojiconEditText) findViewById(R.id.emojicon_edit_text);
        final View rootView = findViewById(R.id.root_view);
        final ImageView emojiButton = (ImageView) findViewById(R.id.emoji_btn);
        final ImageView submitButton = (ImageView) findViewById(R.id.submit_btn);
    
        // Give the topmost view of your activity layout hierarchy. This will be used to measure soft keyboard height
        final EmojiconsPopup popup = new EmojiconsPopup(rootView, this);
    
        //Will automatically set size according to the soft keyboard size
        popup.setSizeForSoftKeyboard();
    
        //Set on emojicon click listener
        popup.setOnEmojiconClickedListener(new OnEmojiconClickedListener() {
    
            @Override
            public void onEmojiconClicked(Emojicon emojicon) {
                emojiconEditText.append(emojicon.getEmoji());
            }
        });
    
        //Set on backspace click listener
        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);
                emojiconEditText.dispatchKeyEvent(event);
            }
        });
    
        //If the emoji popup is dismissed, change emojiButton to smiley icon
        popup.setOnDismissListener(new OnDismissListener() {
    
            @Override
            public void onDismiss() {
                changeEmojiKeyboardIcon(emojiButton, R.drawable.smiley);
            }
        });
    
        //If the text keyboard closes, also dismiss the emoji popup
        popup.setOnSoftKeyboardOpenCloseListener(new OnSoftKeyboardOpenCloseListener() {
    
            @Override
            public void onKeyboardOpen(int keyBoardHeight) {
    
            }
    
            @Override
            public void onKeyboardClose() {
                if (popup.isShowing())
                    popup.dismiss();
            }
        });
    
        //On emoji clicked, add it to edittext
        popup.setOnEmojiconClickedListener(new OnEmojiconClickedListener() {
    
            @Override
            public void onEmojiconClicked(Emojicon emojicon) {
                emojiconEditText.append(emojicon.getEmoji());
            }
        });
    
        //On backspace clicked, emulate the KEYCODE_DEL key event
        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);
                emojiconEditText.dispatchKeyEvent(event);
            }
        });
    
        // To toggle between text keyboard and emoji keyboard keyboard(Popup)
        emojiButton.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
    
                //If popup is not showing => emoji keyboard is not visible, we need to show it
                if (!popup.isShowing()) {
    
                    //If keyboard is visible, simply show the emoji popup
                    if (popup.isKeyBoardOpen()) {
                        popup.showAtBottom();
                        changeEmojiKeyboardIcon(emojiButton, R.drawable.ic_action_keyboard);
                    }
    
                    //else, open the text keyboard first and immediately after that show the emoji popup
                    else {
                        emojiconEditText.setFocusableInTouchMode(true);
                        emojiconEditText.requestFocus();
                        popup.showAtBottomPending();
                        final InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                        inputMethodManager.showSoftInput(emojiconEditText, InputMethodManager.SHOW_IMPLICIT);
                        changeEmojiKeyboardIcon(emojiButton, R.drawable.ic_action_keyboard);
                    }
                }
    
                //If popup is showing, simply dismiss it to show the undelying text keyboard
                else {
                    popup.dismiss();
                }
            }
        });
    
        //On submit, add the edittext text to listview and clear the edittext
        submitButton.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
                String newText = emojiconEditText.getText().toString();
                emojiconEditText.getText().clear();
                mAdapter.add(newText);
                mAdapter.notifyDataSetChanged();
    
            }
        });
    }
    
    private void changeEmojiKeyboardIcon(ImageView iconToBeChanged, int drawableResourceId) {
        iconToBeChanged.setImageResource(drawableResourceId);
    }
    

    }

  5. Jaymo commented on Oct 7, 2015

    @Jaymo

    Your code seems alright but I would suggest you use this libraray instead https://github.com/rockerhieu/emojicon its based Ankush Sachdeva's code but its more up updated and a larger community behind it

  6. vinayjayaram commented on Oct 7, 2015

    @vinayjayaram
    Author

    @Jaymo will try that. Thanks for your update really appreciate

  7. remon commented on Dec 3, 2015

    @remon

    @vinayjayaram , I am facing the same problem , did you fix it ?

  8. vinayjayaram commented on Dec 3, 2015

    @vinayjayaram
    Author

    @remon No dude, was unable to solve it. However it is working in majority of phones except mine!

  9. zeeshanworkplains commented on Feb 17, 2016

    @zeeshanworkplains

    @remon @vinayjayaram have you solved the problem? I'm facing the same issue :(

  10. Max01010101010101 commented on Jul 28, 2016

    @Max01010101010101

    same here ;'(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions