【问题标题】:How to change existing TextView style in action如何更改现有的 TextView 样式
【发布时间】:2015-03-01 09:03:05
【问题描述】:

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

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

  • 使用解决方法并再次创建 TextView
  • 忘记样式,用java方法装饰已有的TextView
  • 别的东西

【问题讨论】:

    标签: android android-styles


    【解决方案1】:

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

    只需将这个xml属性android:visibility="gone"添加到第二个textview,这样第二个textview一开始不显示,但可用。

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

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

    【讨论】:

    • 抱歉,我没有得到您想要表达的内容/它与我的问题的关系。
    • 好的,我已经编辑了我的答案,希望你现在可以理解了。
    • 这是一个有趣的“解决方法”。我不高兴我必须复制每个 TextView 然后查找它们。
    【解决方案2】:

    我使用这两个答案使其工作:

    代码是:

    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;
    

    【讨论】:

    • 感谢终于对如何使用充气机方法在运行时更改样式有所了解。但你要问,真的有可能 google 仍然(6/10/16)没有动态样式吗??
    【解决方案3】:

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

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

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

    【讨论】:

    • 谢谢,它适用于 TextView。不显示边框。我以后必须深入研究它。
    • @LeosLiterak 是的,TextAppearance 没有覆盖边框或背景。使用单独的逻辑来实现。
    猜你喜欢
    • 2011-06-05
    • 1970-01-01
    • 2016-07-05
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    相关资源
    最近更新 更多