Mam aplikację na Androida, w której po dotknięciu przez użytkownika TextView
chcę zastosować zdefiniowany styl.
Myślałem, aby znaleźć, textview.setStyle()
ale nie istnieje. próbowałem
textview.setTextAppearance();
ale to nie działa.
Mam aplikację na Androida, w której po dotknięciu przez użytkownika TextView
chcę zastosować zdefiniowany styl.
Myślałem, aby znaleźć, textview.setStyle()
ale nie istnieje. próbowałem
textview.setTextAppearance();
ale to nie działa.
Odpowiedzi:
Zrobiłem to, tworząc nowy plik XML res/values/style.xml
w następujący sposób:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="boldText">
<item name="android:textStyle">bold|italic</item>
<item name="android:textColor">#FFFFFF</item>
</style>
<style name="normalText">
<item name="android:textStyle">normal</item>
<item name="android:textColor">#C0C0C0</item>
</style>
</resources>
Mam również wpisy w moim pliku „strings.xml”, takie jak ten:
<color name="highlightedTextViewColor">#000088</color>
<color name="normalTextViewColor">#000044</color>
Następnie w moim kodzie utworzyłem ClickListener, aby przechwycić zdarzenie tap w tym TextView: EDIT: Jak z API 23 „setTextAppearance” jest przestarzałe
myTextView.setOnClickListener(new View.OnClickListener() {
public void onClick(View view){
//highlight the TextView
//myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
if (Build.VERSION.SDK_INT < 23) {
myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
} else {
myTextView.setTextAppearance(R.style.boldText);
}
myTextView.setBackgroundResource(R.color.highlightedTextViewColor);
}
});
Aby to zmienić, użyjesz tego:
if (Build.VERSION.SDK_INT < 23) {
myTextView.setTextAppearance(getApplicationContext(), R.style.normalText);
} else{
myTextView.setTextAppearance(R.style.normalText);
}
myTextView.setBackgroundResource(R.color.normalTextViewColor);
Jak zasugerował Jonathan, używając textView.setTextTypeface
dzieł, właśnie użyłem go w aplikacji kilka sekund temu.
textView.setTypeface(null, Typeface.BOLD); // Typeface.NORMAL, Typeface.ITALIC etc.
TextView tvCompany = (TextView)findViewById(R.layout.tvCompany);
tvCompany.setTypeface(null,Typeface.BOLD);
Ustawiłeś to z kodu. Krój pisma
Programowo: czas wykonywania
Możesz to zrobić programowo za pomocą setTypeface ():
textView.setTypeface(null, Typeface.NORMAL); // for Normal Text
textView.setTypeface(null, Typeface.BOLD); // for Bold only
textView.setTypeface(null, Typeface.ITALIC); // for Italic
textView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic
XML: Czas projektowania
Możesz również ustawić w XML:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
Mam nadzieję, że to pomoże
Summved
Okazało się, textView.setTypeface(Typeface.DEFAULT_BOLD);
że jest to najprostsza metoda.
wypróbuj tę linię kodu.
textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);
tutaj, pobierze aktualny krój pisma z tego widoku tekstu i zastąpi go nowym krojem. Nowy krój jest tutaj, DEFAULT_BOLD
ale możesz zastosować o wiele więcej.
Zobacz doco dla setText () w TextView http://developer.android.com/reference/android/widget/TextView.html
Aby nadać styl ciągom, dołącz obiekty android.text.style. * Do SpannableString lub zapoznaj się z dokumentacją dostępnych typów zasobów, aby zapoznać się z przykładem ustawiania sformatowanego tekstu w pliku zasobów XML.