169 похожих чатов

Ребят есть скроллвью, внутри его лежит всяки контент, едиттекст, ещё

ниже кнопка. Нужно чтобы при открытии клава не перекрывала кнопку,а сдвигала всё содержимое скролла вверх. Сейчас клава просто выравнивается по нижнему краю едиттекста. AdjustPan / adjustResize тут роли не играют. Возможно ли такое вообще?

22 ответов

16 просмотров

Андроид пытается показать столько, сколько влезает на экран и чтобы при этом поле ввода было в фокусе. Ты можешь гарантировать, что на экране поменьше и со шрифтами побольше всё это поместится?

Dmitry Levchenko- Автор вопроса

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

у вас style fullscreen?

Попробуйте поменять местами кнопку и поле ввода, просто для теста. Наверняка андроид её поднимет для того, чтобы поле ввода было видно на экране :)

Dmitry Levchenko- Автор вопроса

нет, но transparent statusbar

Dmitry Levchenko- Автор вопроса

к сожалению я делаю задачу по макету и не могу менять порядок элементов

у activity какой style?

Я же говорю - для проверки. Понятно, что дизайн и все такое.

Dmitry Levchenko- Автор вопроса

А ,не заметил.Конечно андроид поднимает и при таком распложении всё ок, но у меня то другой случай

Я к тому, что андроид хочет сделать поле ввода в фокусе видимым. Всё! Остальное его не интересует.

Dmitry Levchenko- Автор вопроса

Theme.AppCompat.DayNight.NoActionBar

Dmitry Levchenko- Автор вопроса

Понятно, видимо всё-таки без костылей не обойтись.Просто из-за того андроид выравнивает всё так,чтобы была видна строка куда вводишь текст и не более, есть проблемы с многострочным хинтом. То есть когда в первый раз появляется клава, вводишь ты в первую строку, а хинт занимает 2 и более, и соотвественно ты эты строки не видишь

Издержки маленьких экранов. Это нужно учитывать.

Dmitry Levchenko- Автор вопроса

Почему маленьких? Хинт большой, и на больших экранах тоже 2 строки занимает.

Маленькие экраны не могут вместить всё сразу.

Dmitry Levchenko- Автор вопроса

Единственное решение которое я придумал, это заюзать тот факт, что клава выравнивается по нижнему краю едиттекста + нижний паддинг. То есть я могу посчитать нассколько мне надо увеличить нижний паддинг при открытии клавы,чтобы были видны все строки хинта. Но проблема в том что при закрытии его надо убирать обратно а мониторинг состояния клавы через OnGlobalLayout выглядит очень не надёжно

Если приходится извращаться, то это явный признак, что что-то делается неправильно.

Dmitry Levchenko- Автор вопроса

А как правильно? Гугл многострочный хинт просто по всем фронтам обделили. Тот же TextInputLayout его не поддерживает,обрезает. Писать свой editText наверно запарно

Задача какая? Гарантированно показать хинт у поля ввода? Или кнопку поднять?

Dmitry Levchenko- Автор вопроса

Гарантированно показать весь хинт в поле ввода, и чтобы editText был в скролле а не зафиксирован внизу экрана. Про кнопку я спросил потому что мне показалось что это более распространённая проблема и при этом смежная

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

Через инсеты такое чекают мне сказали

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта