解決Android自定義view獲取attr中自定義顏色的問題
阿新 • • 發佈:2020-12-09
好久不見,最近有點忙,好久沒有發文章了,前天有個小學弟在寫專案的過程中遇到了這個問題,由此寫一篇文章。
專案場景:
Android自定義View在佈局中設定顏色
問題描述: 以下為學弟的程式碼
//attrs檔案 <attr name="leftcolor" format="color"/> <attr name="rightcolor" format="color"/> //Java檔案程式碼,獲取顏色 int leftcolor=attrs.getAttributeIntValue("http://schemas.android.com/apk/res-auto","leftcolor",Color.BLACK); int rightcolor=attrs.getAttributeIntValue("http://schemas.android.com/apk/res-auto","rightcolor",Color.WHITE); //佈局中 app:leftcolor="@color/colorPrimary" app:rightcolor="#ff0000"
問題:rightcolor能夠獲取到顏色,而left不能獲取到。(寫#ff0000都能獲取到)
分析:
在寫了個Demo後,確實有類似問題,自己試了幾種辦法沒有解決,於是看了以下Android原始碼控制元件,得出解決方案如下
解決方案:
//attrs檔案 <attr name="leftcolor" format="reference|color"/> <attr name="rightcolor" format="reference|color"/> //java檔案 ---TaiJiView為自定義view名稱 //獲取自定義屬性。 TypedArray ta = context.obtainStyledAttributes(attrs,R.styleable.TaiJiView); //獲取顏色 int leftcolor = ta.getColor(R.styleable.TaiJiView_leftcolor,Color.BLACK); int rightcolor=ta.getColor(R.styleable.TaiJiView_rightcolor,Color.WHITE); //回收 ta.recycle(); //佈局中 app:leftcolor="@color/colorPrimary" app:rightcolor="#ff0000"
如果搜到這篇文章,希望能夠解決您的問題。
到此這篇關於Android自定義view獲取attr中自定義顏色的問題的文章就介紹到這了,更多相關Android自定義view內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!