Intereting Posts
Соответствие между координатами ImageView и растровыми пикселями – Android Instagram для эмулятора Android Сделать всплывающее окно с нажатой клавишей на пользовательской клавиатуре Android: EventHub.removeMessages (int what = 107) не поддерживается до того, как WebViewCore настроен Как повторять уведомление ежедневно в определенное время в android через фоновое обслуживание Установить будильник в определенное время Сохранение и восстановление WebView во встроенном приложении PhoneGap Можно ли переместить внутреннюю БД на SDCard? Доступ к упорядоченным изображениям и видео в том же курсоре Запрос и разрешение WRITE_EXTERNAL_STORAGE во время выполнения не влияет на текущий сеанс Android: сообщение Http с параметрами не работает Слияние манифеста Android с библиотеками facebook и firebase ContentResolver.requestSync в адаптере синхронизации не работает в Android Android-PhoneGap / WebView игнорирует метатеги просмотров? IllegalArgumentException в StatFs в внутреннем потоке WebViewCore

Android: мягкая клавиатура выдвигает весь макет, необходимо изменить размер списка

У меня есть полноэкранный макет чата, где у меня заголовок с логотипом сверху, затем следует listView со всеми сообщениями чата, а внизу у меня есть editText и buttom для отправки сообщения чата. Теперь то, что происходит, когда я нажимаю в editText, заключается в том, что весь макет подталкивается. Мне нужно, чтобы заголовок с логотипом всегда оставался там, где они есть, и listView получает размер.

Это не делает трюк:

android:windowSoftInputMode="adjustResize" 

Это ни одно:

 android:windowSoftInputMode="adjustPan" 

Может быть, потому, что у меня полноэкранный макет?

Мне нужно найти другой способ изменить размер списка ListView, когда клавиатура присутствует, какие-либо идеи? Заранее спасибо!

Вот мой макет

 <LinearLayout android:layout_width="match_parent" android:layout_height="70dp" android:background="@drawable/ss99_yellow_area_navigation_bar" android:baselineAligned="false" android:orientation="horizontal" > <ImageView android:id="@+id/back" android:layout_width="45dp" android:layout_height="match_parent" android:layout_marginBottom="10dp" android:layout_marginLeft="5dp" android:layout_marginTop="5dp" android:adjustViewBounds="true" android:clickable="true" android:src="@drawable/ss99_button_back" /> <ImageView android:id="@+id/logo" android:layout_width="wrap_content" android:layout_height="75dp" android:layout_weight="1" android:adjustViewBounds="true" android:src="@drawable/ss99_logo_small" /> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="45dp" android:layout_marginTop="-2dp" android:background="@drawable/ss9_yellow_bar_chat_new" > <TextView android:id="@+id/userOpponent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="5dp" android:text="Medium Text" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/userUser" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/userOpponent" android:layout_alignBottom="@+id/userOpponent" android:layout_alignParentRight="true" android:layout_marginRight="5dp" android:text="Medium Text" android:textAppearance="?android:attr/textAppearanceMedium" /> </RelativeLayout> <ListView android:id="@+id/chatList" android:layout_width="fill_parent" android:layout_height="wrap_content" android:cacheColorHint="#00000000" android:divider="#00000000" android:listSelector="#00000000" android:layout_weight="1" android:stackFromBottom="true" android:transcriptMode="alwaysScroll"> </ListView> <RelativeLayout android:layout_width="match_parent" android:layout_height="60dp" android:background="@drawable/ss9_yellow_area_for_bottom_and_chat_string" > <ImageView android:id="@+id/field1" android:layout_width="220dp" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_gravity="center" android:layout_marginLeft="20dp" android:layout_marginTop="10dp" android:adjustViewBounds="true" android:scaleType="centerInside" android:src="@drawable/ss1_field_big" /> <EditText android:id="@+id/chatEdit" android:layout_width="200dp" android:layout_height="wrap_content" android:layout_alignBottom="@+id/field1" android:layout_alignLeft="@+id/field1" android:layout_alignTop="@+id/field1" android:layout_marginBottom="3dp" android:layout_marginLeft="10dp" android:layout_marginTop="1dp" android:background="@null" android:inputType="textAutoCorrect|textAutoComplete" android:textAppearance="?android:attr/textAppearanceMedium" > </EditText> <ImageView android:id="@+id/chatOk" android:layout_width="60dp" android:layout_height="60dp" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginBottom="5dp" android:adjustViewBounds="false" android:baselineAlignBottom="false" android:clickable="true" android:cropToPadding="false" android:scaleType="fitEnd" android:src="@drawable/ss4_button_go_small" /> </RelativeLayout> </LinearLayout> 1 <LinearLayout android:layout_width="match_parent" android:layout_height="70dp" android:background="@drawable/ss99_yellow_area_navigation_bar" android:baselineAligned="false" android:orientation="horizontal" > <ImageView android:id="@+id/back" android:layout_width="45dp" android:layout_height="match_parent" android:layout_marginBottom="10dp" android:layout_marginLeft="5dp" android:layout_marginTop="5dp" android:adjustViewBounds="true" android:clickable="true" android:src="@drawable/ss99_button_back" /> <ImageView android:id="@+id/logo" android:layout_width="wrap_content" android:layout_height="75dp" android:layout_weight="1" android:adjustViewBounds="true" android:src="@drawable/ss99_logo_small" /> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="45dp" android:layout_marginTop="-2dp" android:background="@drawable/ss9_yellow_bar_chat_new" > <TextView android:id="@+id/userOpponent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="5dp" android:text="Medium Text" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/userUser" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/userOpponent" android:layout_alignBottom="@+id/userOpponent" android:layout_alignParentRight="true" android:layout_marginRight="5dp" android:text="Medium Text" android:textAppearance="?android:attr/textAppearanceMedium" /> </RelativeLayout> <ListView android:id="@+id/chatList" android:layout_width="fill_parent" android:layout_height="wrap_content" android:cacheColorHint="#00000000" android:divider="#00000000" android:listSelector="#00000000" android:layout_weight="1" android:stackFromBottom="true" android:transcriptMode="alwaysScroll"> </ListView> <RelativeLayout android:layout_width="match_parent" android:layout_height="60dp" android:background="@drawable/ss9_yellow_area_for_bottom_and_chat_string" > <ImageView android:id="@+id/field1" android:layout_width="220dp" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_gravity="center" android:layout_marginLeft="20dp" android:layout_marginTop="10dp" android:adjustViewBounds="true" android:scaleType="centerInside" android:src="@drawable/ss1_field_big" /> <EditText android:id="@+id/chatEdit" android:layout_width="200dp" android:layout_height="wrap_content" android:layout_alignBottom="@+id/field1" android:layout_alignLeft="@+id/field1" android:layout_alignTop="@+id/field1" android:layout_marginBottom="3dp" android:layout_marginLeft="10dp" android:layout_marginTop="1dp" android:background="@null" android:inputType="textAutoCorrect|textAutoComplete" android:textAppearance="?android:attr/textAppearanceMedium" > </EditText> <ImageView android:id="@+id/chatOk" android:layout_width="60dp" android:layout_height="60dp" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginBottom="5dp" android:adjustViewBounds="false" android:baselineAlignBottom="false" android:clickable="true" android:cropToPadding="false" android:scaleType="fitEnd" android:src="@drawable/ss4_button_go_small" /> </RelativeLayout> </LinearLayout> 

Solutions Collecting From Web of "Android: мягкая клавиатура выдвигает весь макет, необходимо изменить размер списка"

Попытайтесь добавить это к своей деятельности в Manifest.xml

 <activity android:windowSoftInputMode="stateVisible|adjustNothing"> </activity> 

Хорошо, поэтому я на самом деле решил это сам, но я думаю, что это не больше, чем взломать, поэтому я могу вернуться к этому позже. Но дело в том, что это работает (проверено это на Galaxy S4)

Я изменяю размер списка ListView в соответствии с высотой отображаемой softKeyboard и изменяю ее размер после того, как клавиатура ушла.

 private static boolean keyboardHidden = true; private static int reduceHeight = 0; //... //... final View decorView = this.getWindow().getDecorView(); decorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect rect = new Rect(); decorView.getWindowVisibleDisplayFrame(rect); int displayHeight = rect.bottom - rect.top; int height = decorView.getHeight(); boolean keyboardHiddenTemp = (double)displayHeight / height > 0.8 ; int mylistviewHeight = mylistview.getMeasuredHeight(); if (keyboardHiddenTemp != keyboardHidden) { keyboardHidden = keyboardHiddenTemp; if (!keyboardHidden) { reduceHeight = height - displayHeight; LinearLayout.LayoutParams mParam = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,mylistviewHeight - reduceHeight); mylistview.setLayoutParams(mParam); mylistview.requestLayout(); } else { LinearLayout.LayoutParams mParam = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,mylistviewHeight + reduceHeight); mylistview.setLayoutParams(mParam); mylistview.requestLayout(); } } } }); 

Добавьте макет в ScrollView и добавьте android:windowSoftInputMode="adjustResize" в файле манифеста.

Установите OnTouchListener() в ListView чтобы ребенок просматривал ScrollView и выполнял операции Touch.

  ListView lv = (ListView) findViewById(R.id.layout_lv); lv.setOnTouchListener(new OnTouchListener() { // Setting on Touch Listener for handling the touch inside ScrollView @Override public boolean onTouch(View v, MotionEvent event) { // Disallow the touch request for parent scroll on touch of child view v.getParent().requestDisallowInterceptTouchEvent(true); return false; } }); 

Добавьте это в свою деятельность

 <activity android:windowSoftInputMode="adjustResize" </activity> 

Но для этого нужно добавить высоту listview fill_parent