Android - активность ScrollView, размещенная в TabActivity и windowSoftInputMode
У меня есть TabActivity, которая имеет вкладки в нижней части экрана. Моя первая вкладка содержит действие, которое состоит из фиксированного макета заголовка в верхней части экрана и ScrollView под ним, который содержит несколько элементов управления EditText. ScrollView хорошо прокручивает содержимое между строкой заголовка и нижними вкладками, проблема возникает при нажатии на EditText и появляется программная клавиатура. Я понимаю, чтобы контролировать поведение представлений, когда появляется клавиатура, мне нужно использовать windowSoftInputMode
атрибут в файле манифеста XML. Однако я пробовал обе следующие настройки:
adjustResize
- Предоставляет правильную функциональность для ScrollView, а макет заголовка остается фиксированным в верхней части экрана. Однако элементы управления панели вкладок надвигаются на верхнюю часть клавиатуры.
adjustPan
- Элементы управления панели вкладок остаются в нижней части экрана под клавиатурой (это то, что мне нужно), но другие виды нажимаются клавиатурой, что означает, что макет заголовка выталкивается за пределы экрана.
Кажется, мне нужны характеристики обеих настроек, но их нельзя использовать вместе. Я слышал об обстановке adjustNothing
но если я попробую это сделать, мой проект не будет собран, поскольку он не распознает этот параметр. Я полагаю, мне нужна активность хоста для вкладок adjustPan
но мой контент активность иметь adjustResize
но кажется, что вы не можете объединить их, так как приоритет имеет деятельность хоста вкладок.
Любая помощь с благодарностью.
1 ответ
В отсутствие какого-либо прямого решения для этого я прибег к своего рода хаку. Я установил свою активность TabHost на adjustResize
а затем написал код, чтобы скрыть / показать элементы управления панели вкладок (TabWidget), когда программная клавиатура появляется / исчезает. В итоге мне удалось получить довольно хороший результат, используя следующую технику: отрегулируйте раскладку, когда программная клавиатура включена, чтобы обнаружить появление / исчезновение клавиатуры.