3 votes

setTextAppearance() ne fonctionne pas sur les textviews

Je sais qu'il y a beaucoup de discussions sur setTextAppearance, mais j'ai cherché et je n'ai rien trouvé qui fonctionne pour moi...

Je suis en train de programmer le code d'une TextView, qui se trouve dans une tablerow.
Mais lorsque j'essaie d'appeler le style de styles.xml sur le textView, il ne s'applique pas.

De styles.xml :

<style name="ElemTabArtikl">
    <item name="android:layout_marginLeft">10dp</item>
    <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
</style>

Le code en java :

TextView tvNazArt = new TextView(this);
    tvNazArt.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 0.4f));
    tvNazArt.setTextAppearance(this, R.style.ElemTabArtikl);
    tvNazArt.setText(NazivArt);
    tvNazArt.setPadding(10, 0, 0, 0);
artikliVrstica.addView(tvNazArt);

3voto

dberm22 Points 1370

Si vous n'utilisez que deux entrées dans votre style, pourquoi ne pas tout faire par programme ?

Changez :

tvNazArt.setTextAppearance(this, R.style.ElemTabArtikl);

à :

float density = getResources().getDisplayMetrics().density;
int padding = (int)(10 * density);
tvNazArt.setPadding (padding, int top, int right, int bottom)
tvNazArt.setTextAppearance(this, android.R.style.textAppearance_Medium);

Si vous voulez économiser des frappes, ou si vous devez le faire plusieurs fois, créez une fonction appelée setstyle(), ou quelque chose de ce genre, et appelez le code supplémentaire en l'utilisant.

c'est-à-dire

void setstyle(Context context)
{
    float density = context.getResources().getDisplayMetrics().density;
    int padding = (int)(10 * density);
    tvNazArt.setPadding (padding, int top, int right, int bottom)
    tvNazArt.setTextAppearance(context, android.R.style.textAppearance_Medium);
}

bien sûr, tvNazArt devrait être mondial.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X