Android 不推荐使用按钮setTextAppearance
不推荐使用按钮setTextAppearance(上下文,int resid) 和setTextAppearance(int resid)-仅适用于API级别23Android 不推荐使用按钮setTextAppearance,android,deprecated,Android,Deprecated,不推荐使用按钮setTextAppearance(上下文,int resid) 和setTextAppearance(int resid)-仅适用于API级别23 我应该改用什么?弃用意味着将来有时会放弃对它的支持,但它仍能按预期工作。在旧的API上,没有其他选择,因为新的setTextAppearance(intresid)仅在API级别为23时发布 如果您想长期保持安全,可以使用以下代码: if (Build.VERSION.SDK_INT < 23) { yourButton
我应该改用什么?弃用意味着将来有时会放弃对它的支持,但它仍能按预期工作。在旧的API上,没有其他选择,因为新的
setTextAppearance(intresid)
仅在API级别为23时发布
如果您想长期保持安全,可以使用以下代码:
if (Build.VERSION.SDK_INT < 23) {
yourButton.setTextAppearance(context, resid);
} else {
yourButton.setTextAppearance(resid);
}
if(Build.VERSION.SDK\u INT<23){
yourButton.settext外观(context,resid);
}否则{
yourButton.settext外观(resid);
}
此代码在API级别为23或更高的手机上更喜欢新版本,但在API级别为23的手机不可用时使用旧版本。我要说的与@Daniel Zolnai相同。但是不要在代码中的所有地方都进行检查
Build.VERSION>SDK\u INT<23
。把它放在一个地方,这样以后你就可以很容易地删除它或对它进行更改。那么怎么做呢?我将为yourButton
案例执行此操作
按钮
或任何其他视图。我这样说是因为将来你需要调整一些东西,因此最好有你自己的MyButton
或类似的东西。因此,创建MyButton
扩展Button
MyButton
内,输入以下代码:
public void setTextAppearance(Context context, int resId) {
if (Build.VERSION.SDK_INT < 23) {
super.setTextAppearance(context, resId);
} else {
super.setTextAppearance(resId);
}
}
public void settext外观(上下文上下文,int resId){
如果(Build.VERSION.SDK_INT<23){
super.settext外观(context,resId);
}否则{
super.Settext外观(剩余);
}
}
通过这种方式,您可以始终使用
settextearance
,而无需担心检查生成版本。如果将来,你打算删除整个东西,那么你必须在一个地方重构。这是一点工作,但从长远来看,这将对您有很大帮助,并将减少一些维护噩梦。您为解决什么问题开发了什么api?在新的Android版本上调用旧方法将在内部调用新方法,因此最终得到相同的结果。我们是否可以确保系统不会调用TextView.setTextAppearance(int resId)
,从而导致对super..
的双重调用?是的。只有API<23才会调用setTextAppearance(intresid)
。没有双重调用super
。您的意思是API>=23次调用仅STA(int)
,并且只有API<23次调用STA(context,int)
,对吗?:)顺便说一句,系统什么时候调用这些方法?很抱歉:)嗯,系统不调用这些方法,但是我们会调用,当我们想要设置文本外观时。哦,真的吗?xml属性不会告诉系统对其进行ca吗?那么,在这种情况下,这很容易:)