Softkeyboard скрывает кнопку ниже многострочного EditText?

У меня есть RelativeLayout с EditText , у которого есть Button ниже. В идеале, когда пользователь нажимает на EditText и заполняет несколько строк текста, RelativeLayout также расширяется по мере увеличения строк. Тем не менее, поведение, которое у меня есть сейчас, заключается в том, что после заполнения первой строки EditText клавиатура начинает закрывать Button ниже нее, а после 3-4 строк текста в EditText Button исчезает под клавиатурой. Есть ли способ сделать это так, чтобы при вводе текста текст полностью увеличивался, чтобы кнопка оставалась над клавиатурой? Вот мой код:

AndroidManifest.xml:

  <activity android:name="<Name of project>.activity.Comments" android:configChanges="orientation|keyboardHidden" android:label="Comments" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="stateHidden|adjustResize" /> 

Comments.xml:

 <RelativeLayout android:id="@+id/send_message" android:layout_width="match_parent" android:layout_height="90dp" android:layout_margin="4dp" android:layout_alignParentBottom="true"> <EditText android:fontFamily="sans-serif" android:id="@+id/write_comment" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="12dp" android:gravity="left" android:textSize="16sp" android:textColor="@color/black" android:cursorVisible="false" android:textColorHint="@color/material_color_grey_300" android:hint="@string/commentBack" android:background="@drawable/edittext_bg" android:inputType="textMultiLine" android:isScrollContainer="true" android:maxLength="200" android:scrollHorizontally="false" /> <Button android:fontFamily="sans-serif-medium" android:id="@+id/send_comment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:textColor="@color/colorPrimary" android:layout_marginTop="8dp" android:text="@string/send" android:background="@null" android:layout_below="@id/write_comment" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" android:textAllCaps="false" /> </RelativeLayout> 

Я попытался добавить android:isScrollContainer="true" думая, что он создаст контейнер прокрутки в EditText чтобы он помог расширить макет, но это, похоже, не сработало. Любая помощь будет оценена по достоинству. Благодаря!

Изменить: добавлено во весь макет, основанный на ответе ниже:

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:id="@+id/comments_layout"> <android.support.design.widget.AppBarLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/comments_appbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_alignParentTop="true" android:layout_marginTop="?attr/actionBarSize" android:layout_width="match_parent" android:id="@+id/comments_listview" android:layout_height="match_parent"> <ListView android:scrollbars="vertical" app:layout_behavior="@string/appbar_scrolling_view_behavior" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/rv_view_comments"> </ListView> <TextView android:layout_below="@id/rv_view_comments" android:gravity="center_horizontal" android:padding="16dp" android:textSize="16sp" android:id="@+id/empty_list_item" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" android:text="@string/noComments" > </TextView> <include layout="@layout/include_progress_overlay"/> </RelativeLayout> <RelativeLayout android:id="@+id/send_message" android:layout_width="match_parent" android:layout_height="90dp" android:layout_margin="4dp" android:layout_alignParentBottom="true"> <EditText android:fontFamily="sans-serif" android:id="@+id/write_comment" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="12dp" android:gravity="left" android:textSize="16sp" android:textColor="@color/black" android:cursorVisible="false" android:textColorHint="@color/material_color_grey_300" android:hint="@string/commentBack" android:background="@drawable/edittext_bg" android:inputType="textMultiLine" android:isScrollContainer="true" android:maxLength="200" android:scrollHorizontally="false" /> <Button android:fontFamily="sans-serif-medium" android:id="@+id/send_comment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:textColor="@color/colorPrimary" android:layout_marginTop="8dp" android:text="@string/send" android:background="@null" android:layout_below="@id/write_comment" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" android:textAllCaps="false" /> </RelativeLayout> </RelativeLayout> </android.support.design.widget.CoordinatorLayout> 

Изменить: согласно запросу Jaydroider, я включил фотографию, чтобы показать свою проблему. Если бы я мог сделать GIF или что-то в этом роде, если я добавлю больше текста в поле EditText , кнопка « Send исчезнет под клавиатурой, и, если я не удалю текст из EditText , «Send» не может быть нажат:

Проблема с изображением

Изменить: я также показал, как я просматриваю нижнюю часть моего ListView когда я нажимаю на EditText здесь, если это помогает.

 public void setupComment(final EditText comment) { //Once we send the post, we want to scroll to bottom of listview comment.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { comment.setImeOptions(EditorInfo.IME_ACTION_DONE); resetKeyboardSettings(); } return false; } }); //Hide the cursor until view is clicked on View.OnTouchListener onTouchListener = new View.OnTouchListener(){ @Override public boolean onTouch(View v, MotionEvent event) { System.out.println("Touched"); if (v.getId() == comment.getId()) { comment.setCursorVisible(true); } commentsView.postDelayed(new Runnable() { @Override public void run() { commentsView.smoothScrollToPosition(commentsView.getAdapter().getCount()); } }, 750); return false; } }; comment.setOnTouchListener(onTouchListener); } 

Я попытался с вашим Layout все идеально, и это не проблема.

But you need to make changes to your manifest where you declared your activity используя больше свойств для android:configChanges .

Сделайте это внутри файла android manifest.xml .

  <activity android:name="<Name of project>.activity.Comments" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="Comments" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="stateHidden|adjustResize"/> Размер  <activity android:name="<Name of project>.activity.Comments" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="Comments" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="stateHidden|adjustResize"/> 

Вот XML, который я использовал .

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/comments_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.PopupOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/comments_appbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:id="@+id/comments_listview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/send_message" android:layout_alignParentTop="true" android:layout_marginTop="?attr/actionBarSize"> <ListView android:id="@+id/rv_view_comments" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toEndOf="@+id/empty_list_item" android:scrollbars="vertical" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <TextView android:id="@+id/empty_list_item" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/rv_view_comments" android:gravity="center_horizontal" android:padding="16dp" android:text="No Comments" android:textSize="16sp" android:visibility="gone" /> </RelativeLayout> <RelativeLayout android:id="@+id/send_message" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_margin="4dp"> <EditText android:id="@+id/write_comment" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#FFFFFF" android:cursorVisible="false" android:fontFamily="sans-serif" android:gravity="left" android:hint="Comment Back" android:inputType="textMultiLine" android:isScrollContainer="true" android:maxLength="200" android:padding="12dp" android:scrollHorizontally="false" android:textColor="#000000" android:textColorHint="@android:color/holo_red_dark" android:textSize="16sp" /> <Button android:id="@+id/send_comment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@id/write_comment" android:layout_marginTop="8dp" android:background="@null" android:fontFamily="sans-serif-medium" android:gravity="center|center_vertical" android:text="Send" android:textAllCaps="false" android:textColor="@color/colorPrimary" android:textSize="16sp" /> </RelativeLayout> </RelativeLayout> </android.support.design.widget.CoordinatorLayout> 

I have tested with above changes and it's just working fine you can see below.

Введите описание изображения здесь

Надеюсь, это поможет вам решить вашу проблему.

Попробуй это:

 <RelativeLayout android:id="@+id/send_message" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="4dp" android:layout_alignParentBottom="true"> <EditText android:fontFamily="sans-serif" android:id="@+id/write_comment" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="12dp" android:gravity="left" android:textSize="16sp" android:textColor="@color/black" android:cursorVisible="false" android:textColorHint="@color/material_color_grey_300" android:hint="@string/commentBack" android:background="@drawable/edittext_bg" android:inputType="textMultiLine" android:isScrollContainer="true" android:maxLength="200" android:scrollHorizontally="false" /> <Button android:fontFamily="sans-serif-medium" android:id="@+id/send_comment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:textColor="@color/colorPrimary" android:layout_marginTop="8dp" android:text="@string/send" android:background="@null" android:layout_below="@id/write_comment" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" android:textAllCaps="false" /> </RelativeLayout> 

Поместите все ваши тексты редактирования и кнопку в виде прокрутки.

 <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Edittext <EditText <EditText <Btn </LinearLayout </scrollview 

Моим решением было бы добавить ScrollView в виде корневого представления в вашем макете и методе OnSizeChanged Override View. Если высота EditText увеличивается, а клавиатура блокирует вашу кнопку, Smooth Scroll на вашу кнопку.

Надеюсь это поможет.