【问题标题】:setTextAppearance() is not working on textviewssetTextAppearance() 不适用于文本视图
【发布时间】:2013-07-02 07:42:35
【问题描述】:

我知道有很多关于 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);

【问题讨论】:

    标签: android styles textview


    【解决方案1】:

    如果您只在自己的样式中使用两个条目,为什么不以编程方式全部完成?

    变化:

    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 必须是全球性的。

    【讨论】:

    • android.R.style.textAppearanceMedium 应该是android.R.style.TextAppearance_Medium
    猜你喜欢
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多