У мене є додаток для Android, на якому, коли користувач натискає a TextView
, я хотів би застосувати визначений стиль.
Я думав знайти, textview.setStyle()
але його немає. я намагався
textview.setTextAppearance();
але це не працює.
У мене є додаток для Android, на якому, коли користувач натискає a TextView
, я хотів би застосувати визначений стиль.
Я думав знайти, textview.setStyle()
але його немає. я намагався
textview.setTextAppearance();
але це не працює.
Відповіді:
Я зробив це, створивши новий XML-файл res/values/style.xml
наступним чином:
<?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>
У мене також є записи у моєму файлі "strings.xml" на зразок цього:
<color name="highlightedTextViewColor">#000088</color>
<color name="normalTextViewColor">#000044</color>
Потім у своєму коді я створив ClickListener, щоб захопити подію натискання на цей TextView: EDIT: Від API 23 'setTextAppearance' застарілий
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);
}
});
Щоб змінити його назад, скористайтеся цим:
if (Build.VERSION.SDK_INT < 23) {
myTextView.setTextAppearance(getApplicationContext(), R.style.normalText);
} else{
myTextView.setTextAppearance(R.style.normalText);
}
myTextView.setBackgroundResource(R.color.normalTextViewColor);
Як запропонував Джонатан, використовуючи textView.setTextTypeface
твори, я просто використовував це в додатку кілька секунд тому.
textView.setTypeface(null, Typeface.BOLD); // Typeface.NORMAL, Typeface.ITALIC etc.
Програмно: час виконання
Ви можете це робити програмно, використовуючи 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: Час розробки
Ви також можете встановити в XML:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
Сподіваюсь, це допоможе
Підведено підсумки
я виявив textView.setTypeface(Typeface.DEFAULT_BOLD);
найпростіший метод.
спробуйте цей рядок коду.
textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);
тут він отримає поточний Typeface з цього перегляду тексту та замінить його за допомогою нового Typeface. Новий шрифт тут є, DEFAULT_BOLD
але ви можете застосувати багато іншого.
Див. Doco для setText () у TextView http://developer.android.com/reference/android/widget/TextView.html
Щоб стилізувати рядки, прикріпіть об’єкти android.text.style. * До SpannableString або перегляньте документацію про доступні типи ресурсів для прикладу встановлення форматованого тексту у файлі ресурсу XML.