您的位置:首页 > 编程语言 > Java开发

低版本textView.setAlpha 报错java.lang.NoSuchMethodError: widget.TextView.setAlpha

2015-11-24 11:14 681 查看
1.场景重现:

在对text设置透明度的时候,调用textView.setAlpha 出现标题的问题。

2.问题原因:

从stackOverflow上看到问题出现的原因。

原文地址:http://stackoverflow.com/questions/16755551/alternative-to-setalpha-in-api-level-8

The problem is, the methods written in this class were added in API level 11 and i have minimum sdk version of API level 8.
The following are those methods that were added in API level 11:
setAlpha()
setTranslationX()
setScaleX()
setScaleY()


这段话的意思是setAlpha这个方法在API-11中才加进来,而项目中使用的sdk最小的版本是8,下面的这些方法都是在API-11才加到SDK中。

3.解决方案:

plan 1.可以看到这是API版本的问题,而我们要在项目中避免这样的问题,适配低版本的时候,我们可能会判断API的版本,做出具体的逻辑判断。但这种方法会使项目的可维护性变得很差。如果有很多地方使用的话,维护起来就会很困难。不推荐使用。

plan 2.我们可以在设置文字或者view设置透明度的时候,可以在配置文件中进行设置,比如:

<color name="white_65">#A5FFFFFF</color>


解释一下,这段代码的意思



1.处表示white的颜色#FFFFFF

2.处表示white的65%,就可以表示文字的透明度,view设置background。

可以看出来white的65%的表示与#white的表示上多出了一个A5,

这个A5是什么意思呢,

A5=(十六进制)(255*0.65);

ps:白色颜色值255*0.65得出的值转换成十六进制。得到的结果就是我们要写在配置文件的值。

那这样的话我们就可以避免在低版本上面设置文字的透明度的时候出现奔溃的问题。

对于其他的View在低版本设置的问题,同样可以采用这样的方式。

欢迎大家,教导指正,共同进步。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息