передача android: fontFamily в пользовательский вид в Android - PullRequest
0 голосов
/ 19 апреля 2020

Как передать семейство шрифтов в папке res/font, например, @font/roboto_medium, в качестве атрибута для пользовательского представления в Android в XML, а затем прочитать его в пользовательском представлении в Typeface объект? Это необходимо для пользовательского графического рендеринга текста.

Например:

<MyCustomView android:fontFamily="@font/roboto_medium"/>

Затем внутри MyCustomView.kt:

override fun onCreateView(...) {

  // parse android:fontFamily attribute into Typeface object
  val typeface: Typeface = ???  

}

Ни один из Typeface функции, кажется, поддерживают это. Один из них принимает собственный шрифт внутри папки assets, а другой принимает целое число шрифта ресурса, непосредственно встроенное в код Java / Kotlin, например R.font.roboto_medium.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020

Используйте TypedArray.getResourceId для преобразования атрибута семейства шрифтов в идентификатор, а затем используйте ResourcesCompat.getFont(context, fontId) для получения Typeface.

0 голосов
/ 19 апреля 2020

добро пожаловать в SO. если вы хотите создать пользовательский вид и затем передать шрифт, проверьте эту ссылку:

https://medium.com/@nikk.dave / android -apply-custom-font-from- xml -e7ed5fada019

Если вы хотите просто установить пользовательский шрифт в файле XML, перейдите по этой ссылке, чтобы узнать: https://www.spritle.com/blogs/2017/11/03/set-custom-font-xml-file/

о вашем втором вопросе, я не знаю Не знаю, зачем вам нужен шрифт, но это просто для android представлений: textview.getTypeface ();

...