Мой вопрос довольно простой:
В каждом текстовом представлении я использую атрибут
android:fontFamily="sans-serif-light"
чтобы обеспечить великолепный вид на устройствах post HC.
К сожалению, это работает не со всеми виджетами, и для моих спиннеров мне нужно перезаписать адаптер.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//You can use the new tf here.
if(convertView == null || convertView.getTag() == null) {
// new view - populate
convertView = inflater.inflate(android.R.layout.simple_spinner_dropdown_item, parent, false);
convertView.setTag(new Object());
}
CheckedTextView spinner_text=(CheckedTextView) convertView.findViewById(android.R.id.text1);
//Typeface should be set here...
return spinner_text;
}
}
Итак, есть ли способ получить точно такой же результат с помощью кода?
PS: Нет, я не хочу помещать шрифт в папку с ресурсами, я просто хочу использовать системный.
Если вы используете папку res -> font, вы можете использовать это так
источник
На мой взгляд, все еще есть способ программно применять системные шрифты в TextView без каких-либо проблем с памятью, и это использует
textview.setTextAppearance
метод:источник
android:fontFamily
требуется API 16.TextViewCompat.setTextAppearance(textView, R.style.styleA)
.Динамически вы можете установить fontfamily, подобное android: fontFamily в xml, используя это,
Это список используемых по умолчанию семейств шрифтов , используйте любой из них, заменив строку в двойных кавычках "sans-serif-medium"
"mycustomfont.ttf" - это файл ttf. Путь будет в src / assets / fonts / mycustomfont.ttf , вы можете узнать больше о шрифте по умолчанию в этом семействе шрифтов по умолчанию
источник
Вариант 1 - API 26 и выше
Вариант 2 - API 16 и выше
Ознакомьтесь с полным сроком действия в Руководстве для разработчиков Android .
источник
Можно было бы использовать
setTypeface(Typeface tf, int style)
методTextView
класса.spinner_text.setTypeface(Typeface.SANS_SERIF,Typeface.NORMAL);
источник