Moje pytanie jest dość proste:
W każdym widoku tekstu używam atrybutu
android:fontFamily="sans-serif-light"
aby zapewnić wspaniały wygląd na urządzeniach post HC.
Niestety, nie działa to z każdym widżetem, a dla moich Spinners muszę nadpisać Adapter.
@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;
}
}
Czy jest więc sposób na uzyskanie dokładnie tego samego wyniku za pomocą kodu?
PS: Nie, nie chcę umieszczać kroju pisma w folderze zasobów, chcę tylko użyć systemowego.
Jeśli używasz res -> folder czcionek, możesz używać w ten sposób
źródło
Moim zdaniem nadal istnieje sposób na programowe zastosowanie czcionek systemowych w TextView bez problemów z pamięcią i jest to
textview.setTextAppearance
metoda:źródło
android:fontFamily
wymaga interfejsu API 16.TextViewCompat.setTextAppearance(textView, R.style.styleA)
.Dynamicznie możesz ustawić rodzinę czcionek podobną do android: fontFamily w xml, używając tego,
Oto lista domyślnych rodzin używanych czcionek. Użyj dowolnego z nich, zastępując ciąg podwójnego cudzysłowu „sans-serif-medium”
„mycustomfont.ttf” to plik ttf. Ścieżka będzie w src / asset / fonts / mycustomfont.ttf , więcej informacji na temat domyślnej czcionki z tej domyślnej rodziny czcionek
źródło
Opcja 1 - API 26 i nowsze
Opcja 2 - API 16 i nowsze
Sprawdź pełną cenę w przewodniku dla programistów Androida .
źródło
Byłoby to możliwe przy użyciu
setTypeface(Typeface tf, int style)
metodaTextView
klasy.spinner_text.setTypeface(Typeface.SANS_SERIF,Typeface.NORMAL);
źródło