1. 程式人生 > >低版本textView.setAlpha 報錯java.lang.NoSuchMethodError: widget.TextView.setAlpha

低版本textView.setAlpha 報錯java.lang.NoSuchMethodError: widget.TextView.setAlpha

1.場景重現:

在對text設定透明度的時候,呼叫textView.setAlpha 出現標題的問題。

2.問題原因:

    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在低版本設定的問題,同樣可以採用這樣的方式。

歡迎大家,教導指正,共同進步。