当前位置: 首页 > 知识库问答 >
问题:

setTextAppearance在API级别23中已弃用

鄢晔
2023-03-14

在API级别1中添加的公共无效设置文本外观(上下文,int resId)此方法在API级别23中不建议使用。改为使用setText外观(int)。

我的问题:为什么它被弃用?为什么它不再需要Context?最重要的是,对于旧版本,如何使用settextearance(intresid)

共有3个答案

辛盛
2023-03-14

以上答案是正确的——这里还有另一种方法。在Kotlin中,我编写了一个扩展,如果您确实支持sdk23以及上面和下面的版本,那么它将使您的生活更加轻松。

   fun TextView.setAppearance(context: Context, res: Int) {
        if (Build.VERSION.SDK_INT < 23) {
            setTextAppearance(context, res)
        } else {
            setTextAppearance(res)
        }
    }
吴飞语
2023-03-14

>

像这样使用它:

if (Build.VERSION.SDK_INT < 23) {
    super.setTextAppearance(context, resId);
} else {
    super.setTextAppearance(resId);
}

更多信息:https://stackoverflow.com/a/33393762/4747587

为什么它被弃用?为什么它不再需要上下文?

不建议使用的原因是不需要传递上下文。它使用View提供的默认上下文。看看下面的源代码。这应该可以解释。

public void setTextAppearance(@StyleRes int resId) {
     setTextAppearance(mContext, resId);
}

此处的mContext是在视图类中定义的。因此,您不再需要向该方法传递上下文。TextView将在创建过程中使用提供给它的上下文。这更有道理。

更新

此功能是作为支持库的一部分添加的。因此,不要使用TextView,而是使用TextViewCompat[留档]。还引入了其他类,如ImageViewCompat

公冶嘉
2023-03-14

您可以使用support/androidX库中的TextViewCompat

    import android.support.v4.widget.TextViewCompat // for support-library
    import androidx.core.widget.TextViewCompat      // for androidX library

    // ...

    TextViewCompat.setTextAppearance(view, resId)

在内部,它从API上的视图(view.getContext())获取上下文

TextViewCompat的来源

TextView的源代码(API23)

 类似资料:
  • 问题内容: 我正在研究Java中的旧版API,并了解到诸如和和的类已被和取代。 但是,仍旧不建议弃用它们,并且从本质上讲,弃用应用于已被取代且应避免的软件功能,因此,我不确定何时何时弃用API。 问题答案: 从Sun官方词汇表中: 弃用 :指不再推荐的类,接口,构造函数,方法或字段,并且在以后的版本中可能不再存在。 从何时弃用指南: 您可能已经听说过“自嘲的幽默”一词,或使演讲者的重要性降至最低的

  • 我刚开始编译iOS 11,注意到苹果现在宣布了这个属性 由于不赞成: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin iOS 11中是否有其他属性修复此警告? 默认值会保持为真吗?或者将来会如何处理?

  • 我正在尝试更新,因为它已被弃用。该类配置如下: 现在,如果没有,我将像这样重新定义相同的类: 但不幸的是,我得到了以下错误: 我将感谢任何形式的帮助,这将是最受欢迎的。

  • 问题内容: 我正在尝试更新到Hibernate 4,并且我不赞成使用org.hibernate.annotations.Entity。但是,没有任何文档似乎表明是这种情况。有人对此有任何见识吗? 问题答案: 是的,在4.0+中已弃用: 您应该改用 这是固定的JIRA谈论它。

  • 总结 最后,我发现了相关的问题,错误地标记为在扩展的视图组上需要API 23。 问题189041:setForeground()错误地标记为需要API 23(新API)用于扩展FrameLayout的视图组 如果您没有扩展,则说明文件错误,需要API 23。 第186273期:观点。设置错误的API级别 更新问题 Commonware在ImageView上标记为无法使用方法的副本,并由他回答: s

  • 我第一次在android studio项目上工作,我正在使用广播接收器。每当我运行应用程序时,我都会收到一个错误,即广播文件使用或覆盖了不推荐使用的Api。虽然我的项目运行良好,但我需要知道为什么会出现这种情况,以及如何消除这种错误。我的广播文件如下: 提前感谢您的帮助。