【问题标题】:Android - TextView textStyle is not changingAndroid - TextView textStyle 没有改变
【发布时间】:2021-10-27 06:45:30
【问题描述】:

我想根据我得到的数据将 TextView 样式从 Bold 切换为 Normal。

我是这样做的:

reserveCount.setText("Reservations " + reservationCount);
if(reservationCount<20){
  Log.i("reserveCount", "typeface: NORMAL");
  reserveCount.setTypeface(reserveCount.getTypeface(), Typeface.NORMAL);
} else {
  Log.i("reserveCount", "typeface: BOLD");
  reserveCount.setTypeface(reserveCount.getTypeface(), Typeface.BOLD);
}

但风格根本没有改变(一直保持粗体)。

【问题讨论】:

  • 如果您使用自定义字体,最好使用不同的字体粗体和正常。
  • 你检查过reserveCount的XML文件是不是字体是BOLD..?
  • if (Build.VERSION.SDK_INT >= 23) { textView.setTextAppearance(resId); } else { textView.setTextAppearance(textView.getContext(), resId); }
  • 字体在 xml 中未设置为粗体,并且我没有使用任何自定义字体。有时它工作,有时不工作。我假设它是一些Android错误。我将字体设置为 BOLD 并将其更改为 BOLD,但如果我将其更改回 NORMAL,它将保持 BOLD。有时,如果我第一次将其更改为粗体,它会保持正常。所以我不明白发生了什么。
  • 如果连续设置多次,看起来 setTetxtAppearance 和 setTypeface 有时都不起作用(我加载数据 1:它的粗体,我加载数据 2:它保持粗体)。这似乎是错误。

标签: android textview


【解决方案1】:

尝试在最后调用reserveCount.invalidate()reserveCount.requestLayout()强制重绘View

【讨论】:

    【解决方案2】:

    试试看
    reserveCount.setText("Reservations " + reservationCount);
    if(reservationCount&lt;20){
    Log.i("reserveCount", "typeface: NORMAL");
    reserveCount.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
    } else {
    Log.i("reserveCount", "typeface: BOLD");
    reserveCount.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
    }

    【讨论】:

      猜你喜欢
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      相关资源
      最近更新 更多