Tenho um aplicativo Android no qual, quando o usuário toca em TextView
, gostaria de aplicar um estilo definido.
Pensei em encontrar um textview.setStyle()
mas não existe. eu tentei
textview.setTextAppearance();
mas não funciona.
Tenho um aplicativo Android no qual, quando o usuário toca em TextView
, gostaria de aplicar um estilo definido.
Pensei em encontrar um textview.setStyle()
mas não existe. eu tentei
textview.setTextAppearance();
mas não funciona.
Fiz isso criando um novo arquivo XML da res/values/style.xml
seguinte maneira:
<?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>
Também tenho entradas no meu arquivo "strings.xml" como esta:
<color name="highlightedTextViewColor">#000088</color>
<color name="normalTextViewColor">#000044</color>
Então, em meu código, criei um ClickListener para interceptar o evento tap naquele TextView: EDITAR: A partir da API 23 'setTextAppearance' está obsoleto
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);
}
});
Para alterá-lo de volta, você usaria isto:
if (Build.VERSION.SDK_INT < 23) {
myTextView.setTextAppearance(getApplicationContext(), R.style.normalText);
} else{
myTextView.setTextAppearance(R.style.normalText);
}
myTextView.setBackgroundResource(R.color.normalTextViewColor);
Como Jonathan sugeriu, usando textView.setTextTypeface
obras, acabei de usar em um aplicativo há alguns segundos.
textView.setTypeface(null, Typeface.BOLD); // Typeface.NORMAL, Typeface.ITALIC etc.
TextView tvCompany = (TextView)findViewById(R.layout.tvCompany);
tvCompany.setTypeface(null,Typeface.BOLD);
Você pode configurá-lo a partir do código. Tipo de letra
Programaticamente: tempo de execução
Você pode fazer programaticamente usando 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: Tempo de Design
Você também pode definir em XML:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
Espero que isso ajude
Summved
eu descobri textView.setTypeface(Typeface.DEFAULT_BOLD);
que é o método mais simples.
tente esta linha de código.
textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);
aqui, ele obterá o Typeface atual desta visualização de texto e o substituirá usando o novo Typeface. Um novo tipo de letra aqui é, DEFAULT_BOLD
mas você pode aplicar muitos mais.
Consulte o doco para setText () em TextView http://developer.android.com/reference/android/widget/TextView.html
Para estilizar suas strings, anexe objetos android.text.style. * A um SpannableString ou consulte a documentação de Tipos de recursos disponíveis para obter um exemplo de configuração de texto formatado no arquivo de recurso XML.
Dependendo de qual estilo você deseja definir, você deve usar métodos diferentes. O material TextAppearance tem seu próprio setter, TypeFace tem seu próprio setter, background tem seu próprio setter, etc.