如何更改现有的TextView样式

时间:2015-03-01 09:03:06

标签: android android-styles

我对TextViews和Button有一些意图。如果用户单击该按钮并且有一些错误,我想更改一个TextView的外观。例如。将边框更改为红色并使字体变为粗体。我为它写了一个样式,但我没有在TextView上找到方法setStyle。经过一些自学,我意识到Android does not support setting the style programmatically。当您创建意图source时,有一些解决方法。但我的意图已经存在,重新创建它似乎很奇怪。

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

  • 使用变通方法并再次创建TextView
  • 忘记样式并使用java方法来装饰现有的TextView
  • 别的东西

3 个答案:

答案 0 :(得分:2)

直接更改textview的样式无法正常工作。但您可以在布局中创建第二个带有其他样式的文本视图,如果需要,可以显示这些样式。

只需将此xml属性android:visibility="gone"添加到第二个文本视图中,因此第一个文本视图最初不会显示,但可用。

当您现在想要更改textview的样式时,您只需要隐藏第一个文本视图并显示第二个文本视图,就可以交换这两个文本视图

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

答案 1 :(得分:1)

您可以尝试在textview上使用setTextAppearance()。链接是:setTextAppearance

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

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

答案 2 :(得分:1)

我使用这两个答案使其成功:

,代码是:

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;