如何在操作中更改现有的TextView样式



我对一组TextViews和一个Button有一些意图。如果用户点击按钮,出现一些错误,我想更改一个TextView的外观。例如,将边框更改为红色,并将字体加粗。我为它写了一个样式,但在TextView上找不到方法setStyle。经过一番自学,我意识到Android不支持通过编程设置样式。在创建意向源时,有一些变通方法。但我的意图已经存在,重新创造它似乎很奇怪

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

  • 使用解决方法,然后再次创建TextView
  • 忘记样式,使用java方法修饰现有的TextView
  • 其他的东西
正如您所知,直接更改文本视图的样式是行不通的。但是,您可以在布局中创建具有其他样式的第二个文本视图,如果需要,可以显示该视图。

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

当你现在想更改文本视图的样式时,你只需要通过隐藏第一个和显示第二个来交换两个文本视图

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

我使用了这两个答案来实现它:

  • https://stackoverflow.com/a/5488652/1639556
  • https://stackoverflow.com/a/14195090/1639556

代码为:

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;

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

您的样式需要TextAppearance。某物作为父母的某件事。

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

最新更新