android - setTextAppearance() 不适用于 TextView

标签 android styles textview

我知道有很多关于 setTextAppearance 的讨论,但我进行了搜索,但没有找到任何适合我的东西......

我正在以编程方式设置 textView 的代码,它位于表格行内。
但是当我尝试从 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);

最佳答案

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

改变:

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 - setTextAppearance() 不适用于 TextView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17420105/

相关文章:

php - 解析数据时出错 org.json.JSONException : Value &lt;! java.lang.String 类型的 DOCTYPE 无法转换为 JSONObject

css - 居中 CSS/HTML 主 div

reactjs - 我想使用状态根据窗口宽度更改样式

c# - 使用自定义控件绑定(bind)时如何允许默认值

java - 警报对话框中的 HTTP 链接不起作用

android - 将字符串中的英文数字转换为阿拉伯数字

android - 在 Horizo​​ntalScrollView 中检测 throw 结束?

android - 使用包装内容可绘制图像获取 ImageView 位置

android - 微调项文本显示为剪切文本

android - 如何以编程方式设置 TextAppearance