为了账号安全,请及时绑定邮箱和手机立即绑定

如何在运行时更改TextView的样式

如何在运行时更改TextView的样式

慕尼黑8549860 2019-12-12 10:10:54
我有一个Android应用程序,当用户点击时TextView,我想应用定义的样式。我以为找到一个,textview.setStyle()但它不存在。我试过了textview.setTextAppearance();但它不起作用。
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

我通过创建一个新的XML文件res/values/style.xml来做到这一点,如下所示:


<?xml version="1.0" encoding="utf-8"?>

<resources>


    <style name="boldText">

        <item name="android:textStyle">bold|italic</item>

        <item name="android:textColor">#FFFFFF</item>

    </style>


    <style name="normalText">

        <item name="android:textStyle">normal</item>

        <item name="android:textColor">#C0C0C0</item>

    </style>


</resources>

我的“ strings.xml”文件中也有一个条目,如下所示:


<color name="highlightedTextViewColor">#000088</color>

<color name="normalTextViewColor">#000044</color>

然后,在我的代码中,我创建了一个ClickListener来捕获该TextView上的tap事件: 编辑: 自API 23起,不建议使用setTextAppearance


    myTextView.setOnClickListener(new View.OnClickListener() {

                public void onClick(View view){

                    //highlight the TextView

                    //myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);

    if (Build.VERSION.SDK_INT < 23) {

       myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);

    } else {

       myTextView.setTextAppearance(R.style.boldText);

    }

     myTextView.setBackgroundResource(R.color.highlightedTextViewColor);

                }

            });

要将其改回,可以使用以下方法:


if (Build.VERSION.SDK_INT < 23) {

    myTextView.setTextAppearance(getApplicationContext(), R.style.normalText);

} else{

   myTextView.setTextAppearance(R.style.normalText);

}

myTextView.setBackgroundResource(R.color.normalTextViewColor);



查看完整回答
反对 回复 2019-12-13
?
烙印99

TA贡献1829条经验 获得超13个赞

就像乔纳森(Jonathan)建议的那样,在使用textView.setTextTypeface作品的同时,我只是在几秒钟前在一个应用程序中使用过它。


textView.setTypeface(null, Typeface.BOLD); // Typeface.NORMAL, Typeface.ITALIC etc.


查看完整回答
反对 回复 2019-12-13
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

以编程方式:运行时


您可以使用setTypeface()以编程方式进行操作:


textView.setTypeface(null, Typeface.NORMAL);      // for Normal Text

textView.setTypeface(null, Typeface.BOLD);        // for Bold only

textView.setTypeface(null, Typeface.ITALIC);      // for Italic

textView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic

XML:设计时间


您还可以设置XML:


android:textStyle="normal"

android:textStyle="normal|bold"

android:textStyle="normal|italic"

android:textStyle="bold"

android:textStyle="bold|italic"

希望这会有所帮助


总结



查看完整回答
反对 回复 2019-12-13
  • 3 回答
  • 0 关注
  • 297 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信