Android - 如何以编程方式设置 TextView 的文本样式?

10 浏览
0 Comments

Android - 如何以编程方式设置 TextView 的文本样式?

有没有一种方法可以通过编程方式设置TextView的textStyle属性?似乎没有setTextStyle()方法。

需要明确的是,我不是在谈论View/Widget样式!我是在谈论以下内容:

android:id="@+id/my_text"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Hello World"

android:textStyle="bold" />

0
0 Comments

问题的出现的原因:

setTextAppearance方法在api level 23被弃用,需要寻找新的方法来设置TextView的文本样式。

解决方法:

在api level 23及以上的版本中,可以使用新的方法来设置TextView的文本样式,该方法不需要传入上下文参数。可以使用setTextAppearance方法来设置TextView的文本样式,也可以使用setTextTypeface方法。

相关代码示例:

// 使用setTextAppearance方法设置TextView的文本样式
textView.setTextAppearance(context, R.style.TextAppearance);
// 使用setTextTypeface方法设置TextView的文本样式
textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));

0
0 Comments

问题的原因是使用setTypeface方法设置TextView的文本样式时,如果不指定之前设置的样式,会导致样式丢失。解决方法是使用getTypeface方法获取之前设置的样式,并在setTypeface方法中传入该样式,以保留之前设置的样式。

具体的解决方法如下:

textview.setTypeface(textview.getTypeface(), Typeface.BOLD);

注意,如果之前设置的样式是DEFAULT_BOLD,则应该使用DEFAULT_BOLD作为第二个参数,如下所示:

textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);

另外,通过调用getTypeface().getStyle()可以获取到文本样式的值,该值对应于android:textStyle属性。

0
0 Comments

Android - set TextView TextStyle programmatically?

当我们需要在Android中以编程方式设置TextView的样式时,可以使用TextView的setTextAppearance方法。以下是一个使用setTextAppearance方法设置TextView样式的示例:

首先,在values/styles.xml中定义一个名为RedHUGEText的样式,该样式具有以下属性:textSize、textColor和textStyle。

然后,在XML布局文件中创建一个普通的TextView,并设置其id为text_view_title,以及一些其他属性。

在Activity的Java代码中,通过findViewById方法获取到TextView的实例,并使用setTextAppearance方法将RedHUGEText样式应用到TextView上。

如果你的应用程序的最低API级别为23或更高,可以直接调用setTextAppearance方法。否则,需要使用androidX库中的TextViewCompat类来兼容较低的API级别。

需要注意的是,只有在文本样式确实取决于Java逻辑的条件或者在代码中动态生成UI时,才建议使用setTextAppearance方法。如果文本样式不变,最好直接在XML布局文件中设置样式属性。

这种方法只能设置一部分可以在