如何更改现有的 TextView 样式

How to change existing TextView style in action

我对一组 TextView 和一个按钮有一些想法。如果用户单击按钮并且出现错误,我想更改一个 TextView 的外观。例如。将边框更改为红色并使字体变为粗体。我为它写了一个样式,但我没有在 TextView 上找到方法 setStyle。经过一些自学,我意识到 Android does not support setting the style programmatically. There are some workarounds, when you create the intent source。但是我的意图已经存在,重新创建它似乎很奇怪。

你能告诉我正确的方法吗?

您可以尝试在文本视图上使用 setTextAppearance()。 link 是:setTextAppearance

您的样式需要 TextAppearance.SomeThing.SomeOtherThing 作为父样式。

使用 R.style.YourStyleName 作为整数参数。

如您所知,直接更改 textview 的样式是行不通的。但是您可以在您的布局中创建具有其他样式的第二个 textview,如果需要,您可以显示它。

把这个xml属性android:visibility="gone"加到第二个textview上,所以这个第二个textview一开始不显示,但是可用

当您现在想要更改 textview 的样式时,您只需通过隐藏第一个并显示第二个来交换两个 textview

    textView1.setVisibility(View.GONE);
    textView2.setVisibility(View.VISIBLE);

我使用了这两个答案来让它工作:

代码是:

ViewManager parent = (ViewManager) unknown.getParent();
parent.removeView(unknown);
TextView newUnknown = (TextView)getLayoutInflater().inflate(R.layout.tvtemplate, null);
newUnknown.setId(unknown.getId());
parent.addView(newUnknown, unknown.getLayoutParams());
unknown = newUnknown;