setTextAppearance()不适用于textviews

时间:2013-07-02 07:42:36

标签: android styles textview

我知道有很多关于setTextAppearance的讨论,但我搜索了一下,但我找不到任何对我有用的东西......

我是以编程方式设置textView的代码,即在tablerow中 但是当我试图从textView上的styles.xml调用样式时,它不适用
来自styles.xml:

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

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);

1 个答案:

答案 0 :(得分:3)

如果您只使用自己风格的两个条目,为什么不以编程方式完成所有操作?

变化:

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);

如果你想保存击键,或者必须多次这样做,可以创建一个名为setstyle()的函数,或者那种性质的函数,并使用它来调用额外的代码。

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);
}

当然,tvNazArt必须是全球性的。