Как Android определяет, следует ли перемещать макет вверх при отображении экранной клавиатуры?

Как Android определяет, следует ли перемещать макет вверх при отображении экранной клавиатуры?

Примечание. Я знаю, что действие свойство android: windowSoftInputMode = "adjustResize | adjustResize | adjustUnspecified" существует, как описано здесь http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft , но в моем случае это не имеет никакого эффекта. Это моя проблема:

У меня есть два действия, в основном один и тот же макет, но в первом из них используется ListView , содержащий список кнопок . Второе действие содержит прокрутку с кнопками . В остальном то же самое, такое же количество кнопок, одинаковая высота элементов и т. Д.

Теперь, когда я нажимаю кнопку поиска, чтобы открыть панель ввода поиска, в моем первом действии, все макеты перемещаются вверх . Во время второго действия макет не перемещается вверх, а экранная клавиатура просто отображается поверх него. На самом деле я хочу, чтобы он вел себя именно так. Как я могу добиться того же с моей деятельностью, использующей ListView?

В моем манифесте изначально я не указывал никаких атрибутов android: windowSoftInputMode , но даже если я это сделаю, он не сделает любая разница; Я пробовал все три значения (adjustPan, adjustResize, adjustUndefined, без разницы).

Это мой макет:

1) http://pastebin.com/5zzVxjbK

2) http://pastebin.com/KFtPuHvP

Однако интересно: когда я устанавливаю видимость ListView в макете 1 (слева) на View.INVISIBLE, тогда макет не перемещается вверх!

alt text

6
задан Mathias Conradt 6 September 2010 в 13:56
поделиться