Android — активность ScrollView, размещенная в TabActivity и windowSoftInputMode

У меня есть TabActivity с вкладками в нижней части экрана. Моя первая вкладка содержит действие, состоящее из фиксированного макета заголовка в верхней части экрана и ScrollView под ним, который содержит несколько элементов управления EditText. ScrollView отлично прокручивает содержимое между панелью заголовка и нижними вкладками, проблема возникает, когда нажимается EditText и появляется программная клавиатура. Я понимаю, что для управления поведением представлений при появлении клавиатуры мне нужно использовать атрибут windowSoftInputMode в XML-файле манифеста. Однако я пробовал обе следующие настройки:

adjustResize — дает правильную функциональность для ScrollView, а макет заголовка остается фиксированным в верхней части экрана. Однако элементы управления панели вкладок выдвинуты вверх поверх клавиатуры.

adjustPan — Элементы управления панелью вкладок остаются внизу экрана под клавиатурой (это то, что я хочу), но другие представления выдвигаются клавиатурой, что означает, что макет заголовка выдвигается за пределы экрана.

Кажется, мне нужны характеристики обеих настроек, но их нельзя использовать вместе. Я слышал о настройке adjustNothing, но если я попробую это, мой проект не будет собран, так как он не распознает эту настройку. Я предполагаю, что мне нужно, чтобы моя активность хоста вкладок имела adjustPan, но моя активность контента имела adjustResize, но, похоже, вы не можете комбинировать два, поскольку это активность хоста табуляции имеет приоритет.

Любая помощь очень ценится.


person Jonathan Wareham    schedule 16.10.2013    source источник
comment
не уверен, поможет ли это, так как я не смог его протестировать, но проверьте этот ответ, возможно, вы можете установить свойство в содержимом программно stackoverflow.com /a/6138509/562840   -  person Mikel    schedule 16.10.2013
comment
Спасибо за предложение, выглядело многообещающе, но не сработало :-(.   -  person Jonathan Wareham    schedule 16.10.2013


Ответы (1)


В отсутствие какого-либо прямого решения для этого я прибегнул к своего рода взлому. Я установил для своей активности TabHost значение adjustResize, а затем написал код для скрытия/отображения элементов управления панелью вкладок (TabWidget), когда появляется/исчезает программная клавиатура. В конце концов мне удалось получить довольно хороший результат, используя технику здесь: Adjust макет при включенной программной клавиатуре для обнаружения появления/исчезновения клавиатуры.

person Jonathan Wareham    schedule 18.10.2013