好久不見,最近有點忙,好久沒有發文章了,前天有個小學弟在寫專案的程序中遇到了這個問題,由此寫一篇文章,
專案場景:
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"
如果搜到這篇文章,希望能夠解決您的問題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/231021.html
標籤:其他
