У меня есть приложение для 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);
здесь он получит текущий шрифт из этого текстового представления и заменит его новым шрифтом. Здесь есть новый шрифт, DEFAULT_BOLD
но вы можете применить гораздо больше.
См. Doco для setText () в TextView http://developer.android.com/reference/android/widget/TextView.html
Чтобы стилизовать строки, прикрепите объекты android.text.style. * К SpannableString или см. Документацию по доступным типам ресурсов для примера настройки форматированного текста в файле ресурсов XML.