Для меня я не хотел предполагать, что высота клавиатуры - это определенное измерение.Независимо от того, что вас беспокоит, создайте onTouchListener, а затем сделайте следующее:
setOnTouchListener(new OnTouchListener() {
Runnable shifter=new Runnable(){
public void run(){
try {
int[] loc = new int[2];
//get the location of someview which gets stored in loc array
findViewById(R.id.someview).getLocationInWindow(loc);
//shift so user can see someview
myscrollView.scrollTo(loc[0], loc[1]);
}
catch (Exception e) {
e.printStackTrace();
}
}}
};
Rect scrollBounds = new Rect();
View divider=findViewById(R.id.someview);
myscollView.getHitRect(scrollBounds);
if (!divider.getLocalVisibleRect(scrollBounds)) {
// the divider view is NOT within the visible scroll window thus we need to scroll a bit.
myscollView.postDelayed(shifter, 500);
}
});
// по сути, мы создаем исполняемый файл, который прокручивает к новому местоположению некоторого представления, которое вы ХОТИТЕ видимым на экране.вы выполняете этот runnable, только если он не находится в пределах границ прокрутки (его нет на экране).Таким образом, он перемещает представление прокрутки в ссылочное представление (в моем случае «someview», которое было разделителем строк).