Держите TextInputLayout всегда сфокусированным или сохраняйте ярлык всегда расширенным

Мне было интересно, можно ли всегда расширять ярлык независимо от того, есть ли текст в EditText . Я посмотрел вокруг в источнике, и это использование ValueAnimator и counter внутри TextWatcher для анимации или без изменений. Может быть, я могу настроить пользовательский TextWatcher с помощью специального ValueAnimator в EditText внутри TextInputLayout ?

Для меня с поддержкой 23.3.0 он работает для использования

  <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="wow such hint" app:hintEnabled="true" app:hintAnimationEnabled="false" /> 

Текущая версия TextInputLayout существует специально для того, чтобы сделать одно: показать / скрыть вспомогательную метку в зависимости от того, есть ли какой-либо текст в EditText или нет. Вам нужно другое поведение, поэтому вам нужен другой виджет, чем TextInputLayout . Этот случай является идеальным кандидатом на создание пользовательского представления, которое будет соответствовать вашим потребностям.

Тем не менее, ваша идея установки пользовательского TextWatcher в EditText не будет работать либо потому, что TextInputLayout не обнаруживает ничего из его внутренних компонентов, которые фактически обрабатывают анимацию – ни updateLabelVisibility() , setEditText() , волшебный Handler который выполняет работу Или что-нибудь еще. Конечно, мы, конечно, не хотим идти по пути отражения для такой детали, поэтому …

Просто используйте MaterialEditText ! Он имеет следующее свойство, которое делает именно то, что вы хотите.

Met_floatingLabelAlwaysShown : всегда показывать плавающую метку, а не анимировать ее в / из. False по умолчанию.

Библиотека довольно стабильна (я использую ее в двух разных проектах) и имеет множество возможностей для настройки. Надеюсь, поможет!