Kotlin - настраиваемый шрифт для alertDialog

Я должен изменить шрифт по умолчанию для alertDialog.setMessage и alertDialog.setTitle, но я не могу использовать собственный макет, поэтому мне нужно изменить его с помощью кода в Котлин. Я пробовал использовать шрифт, но он не определяет шрифт в res/font/product_sans_bold.ttf

Я также использовал

content.text = Html.fromHtml(resources.getString(R.string.centripetaFormule))
content.typeface = ResourcesCompat.getFont(applicationContext, R.font.product_sans_bold)
alertDialog.setView(content)

и работает, но не так, как я хочу.

У меня есть строка

<string name  = "centripetaFormule>![CDATA[<h5>(...)</h5><p>(...)</p> 

где h5 выделен полужирным шрифтом, поэтому при использовании переменного содержимого не будет различий между h5 и «обычным» текстом, за исключением размера.

Итак, я хочу изменить шрифт только для обычного текста, я не могу использовать собственный макет, мне нужно использовать строки с CDATA.

Как это сделать?

Надеюсь, я хорошо это объяснил

3
1
878
2

Ответы 2

Android поставляется с красивым шрифтом по умолчанию, но в некоторых случаях вы можете использовать другой шрифт.

Самый быстрый способ использовать пользовательский шрифт Android

Поместите файл шрифта в папку с ресурсами

Создать объект гарнитуры

 Typeface customFont = Typeface.createFromAsset(getAssets(), "fonts/Roboto-Bold.ttf")

Установите для шрифта значение TextView / EditText / Button и т. д.

TextView textView = (TextView) findViewById(R.id.my_textview);
textView.setTypeface(customFont);

Спасибо за ответ, но проблема в том, что у меня есть заголовок и «нормальный» текст, и у них должны быть разные шрифты, поэтому этот метод не работает.

Arfmann 07.11.2018 14:44

Я обхожу проблему так:

Настроить вид

dialog_custom_nunito.xml:

 <?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
              android:layout_width = "match_parent"
              android:layout_height = "match_parent"
              android:orientation = "vertical">

    <TextView android:id = "@+id/custom_dialog_tv" android:layout_width = "wrap_content"
              android:layout_margin = "12sp"
              android:textSize = "18sp"
              android:layout_height = "wrap_content" android:text = "@string/warning_recherche_no_found"/>

</LinearLayout>  

Код Котлина:

val builder = AlertDialog.Builder(this)
builder.setView(R.layout.dialog_custom_nunito)
builder.setNegativeButton("OK") { dialogInterface, i -> }
                    builder.show()

Надеюсь, это поможет другим людям,

Другие вопросы по теме