Изменить TextInputLayout Hint Font

1

Привет, я использую kotlin для установки шрифта подсказки для TextInputLayout как:

   passwordTextLayout.typeface = Typeface.createFromAsset(context.assets, "fonts/af/myfont.ttf")

где myfont.ttf - это файл личного шрифта

это работает только тогда, когда подсказка находится/помещается в текстовом редакторе textinputlayout, но когда я щелкнул текст редактирования и начал печатать подсказку, она свернулась, и он изменил шрифт на какой-то шрифт по умолчанию!

Я хочу использовать один и тот же тип лица для подсказки в обоих условиях, т.е. когда подсказка находится внутри текста редактирования и когда он сворачивается.

Изображение, когда подсказка находится внутри текста редактирования (см. F для изменения шрифта):

Изображение 174551

Рисунок, когда пользователь щелкает внутри текста редактирования, шрифт изменяется как (проверьте символ f):

Изображение 174551

Теги:
kotlin
android-textinputlayout
typeface

3 ответа

0

Попробуйте добавить эту строку в ваш TextInputLayout:

style="@style/MyStyle"

Затем создаем запись в styles.xml:

<style name="MyStyle">
        <item name="android:textColor">#fff</item>
        <item name="android:textSize">16sp</item>
        <item name="android:fontFamily">"@fonts/myfont.ttf"</item>
</style>

и посмотрим, что получится.

0

У меня есть ответ, ребята! Просто проверьте, когда меняется фокус, и всякий раз, когда он меняет фокус, просто установите желаемую гарнитуру! Быть как:

     passwordEditTextInsidePasswordTextLayout.onFocusChangeListener =
            View.OnFocusChangeListener { _, _ -> passwordTextLayout.typeface = Typeface.createFromAsset(context.assets, "fonts/af/myfont.ttf") }

На самом деле я ищу изменение фокуса на тексте редактирования внутри макета ввода, и всякий раз, когда он меняет фокус, я переназначаю шрифт. Обратите внимание, что вы должны были установить гарнитуру, когда всплывающее окно с вашими действиями/фрагментами, поэтому в oncreate вы должны вызывать это перед вышеперечисленными слушателями:

     passwordTextLayout.typeface = Typeface.createFromAsset(context.assets, "fonts/af/myfont.ttf")
0

Хорошо, очевидно, есть проблема с гарнитурами в TextInputLayouts с password inputType. Если вы используете TextView.setInputType() с любым из:

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
InputType.TYPE_TEXT_VARIATION_PASSWORD
InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD
InputType.TYPE_NUMBER_VARIATION_PASSWORD

... тогда Android применяет шрифт Monospace.

Я думаю, что лучшим решением будет сделать следующее:

  1. Удалите android: inputType = "textPassword" из определения представления XML.
  2. Применить шрифт с помощью библиотеки Caligraphy3.
  3. Установите PasswordTransformation в коде:

,

 password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
 password.setTransformationMethod(PasswordTransformationMethod.getInstance());

Ещё вопросы

Сообщество Overcoder
Наверх
Меню