Sunday, November 2, 2014

Android : ankushsachdeva emojicon display over softkeyboard (Android)



I implemented the ankushsachdeva emojicon project to display emojicons in my chat app. When i click on a specific chat i start my ChatActivity. If i then immediately click the emoji-imageButton which i made, without expanding the keyboard first, it looks like the left screenshot here


Afterwords, the emojicon-overlay is always displayed correctly. (right screenshot)


I want the overlay to always be like in the right screenshot. Any ideas? (thanks in advance)


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
}
}

No comments:

Post a Comment