Имам приложение за Android с английски и арабски като избираеми езици. Проблемът ми е, че трябва да използвам конкретен шрифт за всеки език.
Какъв е правилният начин за прилагане на това?
Идеята ми беше да създам две различни теми в styles.xml
, като тази:
<resources>
<!-- English application theme. -->
<style name="EnglishTheme" parent="Theme.AppCompat.Light.NoActionBar">
... all my others attributes ...
<item name="pathBoldFont">fonts/FontEnglish-Bold.ttf</item>
<item name="pathRegularFont">fonts/FontEnglish-Regular.ttf</item>
<item name="pathThinFont">fonts/FontEnglish-Thin.ttf</item>
</style>
<!-- Arabic application theme. -->
<style name="ArabicTheme" parent="Theme.AppCompat.Light.NoActionBar">
... all my others attributes ...
<item name="pathBoldFont">fonts/FontArabic-Bold.ttf</item>
<item name="pathRegularFont">fonts/FontArabic-Regular.ttf</item>
<item name="pathThinFont">fonts/FontArabic-Thin.ttf</item>
</style>
</resources>
По време на изпълнение на приложението проверявам локала на потребителя и зареждам правилната тема. Но очевидно това не е много СУХО, защото трябва да пиша два пъти всеки друг атрибут на темата.
Четох, че това не е възможно да се актуализират програмно атрибути на тема (само шрифтове в моя случай), така че какво би могло да бъде по-добро решение?
За информация използвам InflationX/Calligraphy за персонализираните си шрифтове.