View over keyboard
Sometimes We need more space when the keyboard it’s open, the solution can be to put a view over keyboard.
We try this way, we have to create a popup in our activity
public void showPopUpKeyboard() { mIsPopupVisible = true; // Initialize a new instance of LayoutInflater service LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); // Inflate the custom layout/view View customView = inflater.inflate(R.layout.popup_in_keyboard, null); mScrollView = (ScrollView) customView.findViewById(R.id.keyboard_layout_view); // Initialize a new instance of popup window mPopupWindow = new PopupWindow( customView, RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT ); setSizeForSoftKeyboard(); // Get a reference for the custom view close button Button closeButton = (Button) customView.findViewById(R.id.ib_close); // Set a click listener for the popup window close button closeButton.setOnClickListener((View view) -> { // Dismiss the popup window mIsPopupVisible = false; mPopupWindow.dismiss(); }); mPopupWindow.showAtLocation(mParentLayout, Gravity.CENTER, 0, 0); }
And to know our height of keyboard with getViewTreeObserver, you can put this code in our onCreate in Activity
mParentLayout.getViewTreeObserver().addOnGlobalLayoutListener(() -> { Rect r = new Rect(); mParentLayout.getWindowVisibleDisplayFrame(r); int heightDiff = mParentLayout.getRootView().getHeight() - (r.bottom - r.top); if (heightDiff > 100) { //enter your code here if (mIsPopupVisible) { keepKeyboard(); mIsPopupVisible = false; mPopupWindow.dismiss(); } } else { //enter code for hid } });
This is my screen in my popup screen, but you can changes whatever you want.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/keyboard_rootView" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/ib_close" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/keyboard_layout_view" android:background="@android:color/transparent" /> <ScrollView android:id="@+id/keyboard_layout_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white"> <RelativeLayout android:id="@+id/keyboard_video" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_toLeftOf="@+id/keyboard_image_photo_image"> <ImageButton android:id="@+id/keyboard_video_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/activity_messenger_margin_elements" android:background="@drawable/attach_circle" android:src="@drawable/ic_message_videocam" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_video_button" android:layout_centerHorizontal="true" android:paddingBottom="@dimen/activity_messenger_margin_elements" android:text="@string/activity_messenger_video" /> </RelativeLayout> <ImageButton android:id="@+id/keyboard_image_photo_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_margin="@dimen/activity_messenger_margin_elements" android:background="@drawable/attach_circle" android:src="@drawable/ic_message_camera" /> <TextView android:id="@+id/keyboard_image_photo_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_image_photo_image" android:layout_centerHorizontal="true" android:paddingBottom="@dimen/activity_messenger_margin_elements" android:text="@string/activity_messenger_photo" /> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/keyboard_image_photo_image"> <ImageButton android:id="@+id/keyboard_album_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/activity_messenger_margin_elements" android:background="@drawable/attach_circle" android:src="@drawable/ic_message_album" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_album_image" android:layout_centerHorizontal="true" android:paddingBottom="@dimen/activity_messenger_margin_elements" android:text="@string/activity_messenger_album" /> </RelativeLayout> <RelativeLayout android:id="@+id/keyboard_audio_relative_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_image_photo_text" android:layout_toLeftOf="@+id/keyboard_location_button"> <ImageButton android:id="@+id/keyboard_audio_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_margin="@dimen/activity_messenger_margin_elements" android:background="@drawable/attach_circle" android:src="@drawable/ic_message_voice" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_audio_button" android:layout_centerHorizontal="true" android:paddingBottom="@dimen/activity_messenger_margin_elements" android:text="@string/activity_messenger_audio" /> </RelativeLayout> <ImageButton android:id="@+id/keyboard_location_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_image_photo_text" android:layout_centerHorizontal="true" android:layout_margin="@dimen/activity_messenger_margin_elements" android:background="@drawable/attach_circle" android:src="@drawable/ic_message_location" /> <TextView android:id="@+id/keyboard_location_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_location_button" android:layout_centerHorizontal="true" android:paddingBottom="@dimen/activity_messenger_margin_elements" android:text="@string/activity_messenger_location" /> <RelativeLayout android:id="@+id/keyboard_contact_relative_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_image_photo_text" android:layout_toRightOf="@+id/keyboard_location_button"> <ImageButton android:id="@+id/keyboard_contact_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/activity_messenger_margin_elements" android:background="@drawable/attach_circle" android:src="@drawable/ic_contacts_white" /> <TextView android:id="@+id/keyboard_contact_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_contact_button" android:layout_centerHorizontal="true" android:paddingBottom="@dimen/activity_messenger_margin_elements" android:text="@string/activity_messenger_contact" /> </RelativeLayout> <RelativeLayout android:id="@+id/keyboard_document_relative_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_location_text" android:layout_toLeftOf="@+id/keyboard_link_button"> <ImageButton android:id="@+id/keyboard_document_relative_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/activity_messenger_margin_elements" android:background="@drawable/attach_circle" android:src="@drawable/ic_message_file" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_document_relative_button" android:layout_centerHorizontal="true" android:paddingBottom="@dimen/activity_messenger_margin_elements" android:text="@string/activity_messenger_document" /> </RelativeLayout> <ImageButton android:id="@+id/keyboard_link_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_location_text" android:layout_centerHorizontal="true" android:layout_margin="@dimen/activity_messenger_margin_elements" android:background="@drawable/attach_circle" android:src="@drawable/ic_message_link" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_link_button" android:layout_centerHorizontal="true" android:paddingBottom="@dimen/activity_messenger_margin_elements" android:text="@string/activity_messenger_link" /> <RelativeLayout android:id="@+id/keyboard_save_relative_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_location_text" android:layout_toRightOf="@+id/keyboard_link_button"> <ImageButton android:id="@+id/keyboard_save_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/activity_messenger_margin_elements" android:background="@drawable/attach_circle" android:src="@drawable/ic_message_save" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/keyboard_save_button" android:layout_centerHorizontal="true" android:paddingBottom="@dimen/activity_messenger_margin_elements" android:text="@string/activity_messenger_save" /> </RelativeLayout> </RelativeLayout> </ScrollView> </RelativeLayout>