Android: Listview не перемещается вверх с помощью клавиатуры - PullRequest
7 голосов
/ 24 июня 2011

Мой макет выглядит так:

<LinearLayout>
  <RelativeLayout>
    Some Image and Text as Title
  </RelativeLayout>
  <RelativeLayout>
    <LinearLayout>
      <ListView>
        My message List
      </ListView>
    </LinearLayout>
    <RelativeLayout>
      Edit Box and Send Button
    </RelativeLayout>
  </RelativeLayout>
</LinearLayout>

Я явно устанавливаю текущий выбор на последний элемент (самый новый) в списке при отображении.

Если текст не вводится в поле «Редактировать» внизу, экран выглядит следующим образом:

Top Title
  List Item 8
  List Item 7
  ...
  List Item 2
  List Item 1
  Bottom Edit box and Send Button

Когда я нажимаю на поле Изменить, чтобы напечатать мое сообщение, экран выглядит следующим образом:

Top Title
  List Item 8
  ...
  List Item 5
  Bottom Edit Box and Send Button
  Keyboard

Что я действительно хочу, так это:

Top Title
  List Item 4
  ...
  List Item 1
  Bottom Edit Box and Send Button
  Keyboard

Может кто-нибудь помочь мне, пожалуйста?

Ответы [ 2 ]

11 голосов
/ 03 августа 2011

Я нашел ответ здесь .

По сути, просто расширьте ListView с помощью пользовательского класса, переопределите метод onSizeChanged () для setSelection (getCount ());

Похоже, это лучшее решение, и похоже, что Google Voice использует ту же тактику (потому что, если вы находитесь в верхней части списка чатов, а затем поворачиваете экран, вы возвращаетесь вниз).

Также помните, что android: windowSoftInputMode = "AdjustResize" присутствует вместо AdjustPan в тегах вашей активности в манифесте.

2 голосов
/ 30 сентября 2014

Вы пробовали это ?

Вам нужно будет использовать setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL) и setStackFromBottom(true) в вашем списке. Надеюсь, это поможет, это сработало для меня!

...