Я нашел эту ссылку, которая действительно помогла мне.
http://www.droidnova.com/layout-technique-static-elements-below-scrollview,123.html
У меня есть очень специфические индивидуальные потребности в решении для клавиатуры - мне нужно самостоятельно обрабатывать отображение и демонтаж клавиатуры как элемент z-layerв frameLayout.Я использую решение в этой ссылке, чтобы добиться этого и одновременно изменить размер scrollView.Кнопки в представлении прокрутки перемещаются от заподлицо с нижней частью экрана до заподлицо с верхней частью клавиатуры.
У ключа есть android: fillViewport = "true" в scrollView.Затем программным путем задайте для нижнего поля scrollView значение, а для верхнего поля нижнего элемента значение -height.
Вот два моих метода, которые его обрабатывают:
private void setMargins_noKeyboard()
{
ScrollView fieldsScroller = (ScrollView)findViewById(R.id.scroll_fields_view);
FrameLayout keyboardFrame = (FrameLayout)findViewById(R.id.keyboard_root);
int buttonsKeyboardSize = keyboardFrame.getHeight();
MarginLayoutParams frameParams = (MarginLayoutParams)keyboardFrame.getLayoutParams();
frameParams.setMargins(0, 0, 0, 0);
MarginLayoutParams scrollParams = (MarginLayoutParams)fieldsScroller.getLayoutParams();
scrollParams.setMargins(0, 0, 0, 0);
keyboardFrame.setLayoutParams(frameParams);
fieldsScroller.setLayoutParams(scrollParams);
}
private void setMargins_keyboard()
{
ScrollView fieldsScroller = (ScrollView)findViewById(R.id.scroll_fields_view);
FrameLayout keyboardFrame = (FrameLayout)findViewById(R.id.keyboard_root);
int buttonsKeyboardSize = keyboardFrame.getHeight();
MarginLayoutParams frameParams = (MarginLayoutParams)keyboardFrame.getLayoutParams();
frameParams.setMargins(0, -buttonsKeyboardSize, 0, 0);
MarginLayoutParams scrollParams = (MarginLayoutParams)fieldsScroller.getLayoutParams();
scrollParams.setMargins(0, 0, 0, buttonsKeyboardSize);
keyboardFrame.setLayoutParams(frameParams);
fieldsScroller.setLayoutParams(scrollParams);
}