2016-09-21 2 views
0

Если вы посмотрите, как работают IFTTT и Tumblr, вы увидите, что при нажатии на входные данные входа в систему и появление клавиатуры появляется логотип с прекрасной анимацией.Скрыть элементы при отображении клавиатуры

Я хочу сделать что-то подобное, поэтому я немного искал обнаружение/скрытие экранной клавиатуры, но ни одно из решений, которые я нашел (например, this или this), является надежным.

Как добиться такого поведения?

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

ответ

1

У меня была такая же проблема.

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

После выполнения некоторых исследований о том, как сказать, когда клавиатура показывает и чтение this rant from Dianne Hackborn говорит нам, что мы действительно не должны уход когда клавиатура появляется, я решил пересмотреть это и смотреть на него как проблема компоновки , Это было только в том случае, если высота макета была ниже определенного порога, что у меня была проблема.

Я создал подкласс для основного макета с переопределением для onLayout(), который вызовет событие обратного вызова, когда а) высота макета переместилась с нижнего порога на выше порогового значения и b) высота превысила пороговое значение до нижнего порога. В зависимости от того, как это происходит, я бы начал анимацию, чтобы либо удалить логотип, либо перерисовать его.

Я не буду публиковать этот код здесь, потому что, если бы я сделал это сейчас, я бы просто использовал ViewTreeObserver.OnGlobalLayoutListener, чтобы узнать, когда макет изменился. Он был бы наиболее похож на this answer, за исключением того, что вместо проверки величины изменения высоты я установил бы определенный порог и запустил соответствующую анимацию, если высота пересечет порог.

+0

Вы правы, я столкнулся с проблемой не так. Клавиатура не имеет значения, имеет значение размер макета. Это был глазник! –

Смежные вопросы