I had the same problem. I found the answer to a post from Ced here .
The solution is to add this to your input method method,
@Override public void onComputeInsets(InputMethodService.Insets outInsets) { super.onComputeInsets(outInsets); if (!isFullscreenMode()) { outInsets.contentTopInsets = outInsets.visibleTopInsets; } }
Intentionally, submitting a candidate does not push the application up. From doc ,
Please note that since viewing a candidate tends to appear and hide a lot, it does not affect the application interface in the same way as the type of soft input: it will never lead to resizing of application windows, it will simply change them if necessary so that the user can see the current focus.
Hacking above increases the content area to include the candidate viewing area. The document for onComputeInsets will help you understand the concept.
Calculate interesting inserts in your interface. The default implementation uses the top of the candidate frame for visible attachments and the top of the input frame for content attachments.
source share