У меня есть конструкция, где есть вход EditText
с набором опций для блоков ввода (RadioGroup
, полный RadioButtons
). Когда пользователь выбирает определенную опцию, я применил ViewGroup.LayoutParams
для настройки ширины до требуемого значения.Курсор в неправильном положении при изменении размера EditText с animateLayoutChanges
Все отлично работает нормально, но когда я добавляю animateLayoutChanges
, чтобы улучшить внешний вид, курсор в EditView
отрицательно сказывается:
- пользователь вводит значение, все кажется нормальным (тяжести находится прямо в
EditText
кстати) - Проверяется опция, сжимающая вид, - анимированные представления видят, что усугубляется - НО - запись теперь скрыта из виду! Спрятано там, где должно было быть. Если вы щелкнете по полю или измените опцию
RadioButton
на один с одним и тем же размером ввода, запись затем переместится в соответствующее положение ... - Аналогично - вид небольшой и имеет позицию в правильном положении, вариант где выбрано расширение вида - теперь представление расширяется, и запись остается в центре представления вместо перехода в правильное положение! Опять же освежает, когда выполняется другое действие в отношении
EditText
..
Я попытался исправить это:
- Сохранение строки ввода во временную переменную и заменить его
setText()
- Использование
append("")
ничего не добавлять перед повторным добавлением строки - Calling
.requestFocus()
вEditText
при выборе - Перерисовка вид с
.invalidate()
- Установка курсора в конец зрения
- Попытка заказные набор анимаций (без успеха, я, возможно, придется продолжать с этим подходом?)
Если кто-нибудь знает как я могу потенциально обновить представление, чтобы он обновлял текстовую позицию или иным образом отключил анимацию только на этом представлении, оставив все остальные, что было бы здорово!
Спасибо!
Можете ли вы предоставить свой примерный код, чтобы понять, что вы пытаетесь пытаться и не работаете? – mqpasta
Привет, конечно, я могу, но я не вижу, как это поможет - ни один из вышеперечисленных методов не обновляет представление так, что он меняет положение курсора. Мне просто нужен способ обновить его после окончания анимации animateLayoutChanges. Я попытался настроить его, чтобы проверить конец анимации программным способом, но в нем используется layouttransition, а не анимация. Есть ли что-то в вопросе, которое вы не понимаете? – Michal