Home » Android » java – Space between keyboard and EditText in Android

java – Space between keyboard and EditText in Android

Posted by: admin April 23, 2020 Leave a comment

Questions:

Soft input mode is "SOFT_INPUT_ADJUST_PAN", and when keyboard shown, EditText moves up to stay visible, but the keyboard and txt’s bottom are always sticked together as seen on screenshot, I want some space between them, is it possible?

Also input mode must stay as "SOFT_INPUT_ADJUST_PAN".

Sorry form my english, Thanks in Advance…

Screenshot:

How to&Answers:

I applied above methods which worked for me was
Set android:windowSoftInputMode on the Activity to “adjustPan”
than i added the padding to the edittext with gravity bottom
and it works like charm.
Thanks,

Answer:

May this help you:

If this line is written in your code then remove it:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

OR:

You should not be setting your layout_width and layout_heights with explicit pixel values. Instead, use wrap_parent or fill_parent as appropriate.

OR:

If you have set your minSdkVersion to 3 then change it to minSdkVersion=4

Edit:

Set android:windowSoftInputMode on the Activity to "adjustPan"

OR:

Add this code in your main activity in setOnTouchListener() of your EditText:

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_UNSPECIFIED);

Answer:

Why don’t you try this?

android:windowSoftInputMode="adjustResize"

I know you want to adjust pan but this would solve your problem aswell.

Since you really want to stay with adjustPan, maybe you can try re-designing the XML layout a little bit.

You must also add your required padding to the outer most container element in the layout file.

Answer:

Just wondering, is your app full screen? does it have the status bar? If it is try to disable full screen mode and try to see if that solves your problem. I remember there was a bug about this some time ago.

Answer:

try to use GlobalLayoutListener:

private var focusView:View?=null

// Register global layout listener.
    decorView?.viewTreeObserver?.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {

        private val windowVisibleDisplayFrame = Rect()
        private var lastVisibleDecorViewHeight: Int = 0

        override fun onGlobalLayout() {

            // Retrieve visible rectangle inside window.
            decorView.getWindowVisibleDisplayFrame(windowVisibleDisplayFrame)
            val visibleDecorViewHeight = windowVisibleDisplayFrame.height()

            // Decide whether keyboard is visible from changing decor view height.
            if (lastVisibleDecorViewHeight != 0) {
                if (lastVisibleDecorViewHeight > visibleDecorViewHeight + MIN_KEYBOARD_HEIGHT_PX) {
                    // Calculate current keyboard height (this includes also navigation bar height when in fullscreen mode).
                    val currentKeyboardHeight = decorView.height - windowVisibleDisplayFrame.bottom

        //keyboardHeight = currentKeyboardHeight


          focusView =  activity?.currentFocus     
          focusView.setPadding(0, 0, 0, SET_BOTTOM_PADDING_SPACE)  // <---set space here



                } else if (lastVisibleDecorViewHeight + MIN_KEYBOARD_HEIGHT_PX < visibleDecorViewHeight) {

                    focusView.setPadding(0, 0, 0, 0)

                }
            }
            // Save current decor view height for the next call.
            lastVisibleDecorViewHeight = visibleDecorViewHeight
        }
    })

Answer:

Simple padding in edit text won’t work.

Use drawable with your edit text like below:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="8dp"
        android:left="8dp"
        android:right="8dp"
        android:top="8dp">

        <shape android:shape="rectangle">

            <corners android:radius="10dp" />
            <stroke
                android:width="1dp"
                android:color="@color/white" />
            <solid android:color="@color/transparent" />
        </shape>
    </item>
</layer-list>

and then use

    android:windowSoftInputMode="adjustPan"

in your manifest file.

Answer:

If you need to have a distance between the keyboard and the EditText, this can be done easily by just add padding bottom to the EditText:

 <EditText
     android:id="@+id/your_edit_text"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:paddingBottom="10dp"/>