我有一個自定義視圖,其中我想設置textview的顏色。自定義屬性獲取顏色返回無效值
我
attrs.xml
<declare-styleable name="PropertyView">
<attr name="propertyTitle" format="string" localization="suggested" />
<attr name="showTitle" format="boolean" />
<attr name="propertyTextColor" format="color" />
<attr name="propertyTextSize" format="dimension" />
</declare-styleable>
我將它設置在佈局文件
<com.something.views.PropertyView
android:id="@+id/dwf_rAwayTeamTimePenaltyInput"
style="@style/mw"
propertyview:propertyTextSize="16sp"
propertyview:propertyTitle="@string/AwayTeam"
propertyview:showTitle="true"
propertyview:propertyTextColor="@color/textLight" />
而且在我的代碼設置
TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.PropertyView, 0, 0);
showTitle = a.getBoolean(R.styleable.PropertyView_showTitle, false);
String title = a.getString(R.styleable.PropertyView_propertyTitle);
float textSize = a.getDimension(R.styleable.PropertyView_propertyTextSize, -1);
int color = a.getColor(R.styleable.PropertyView_propertyTextColor, -1);
textSize = textSize/getResources().getDisplayMetrics().scaledDensity;
if(BuildConfig.DEBUG) Log.e(getClass().getName(), "Color set to: " + color);
setShowTitle(showTitle);
setTitle(title);
if(textSize >= 0) mTitleTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize);
if(color != -1) mTitleTextView.setTextColor(color);
a.recycle();
,但顏色保持返回-1。 我也試圖設置顏色爲#000 當我這樣做,我得到的-16777216
值我也試過這個問題或建議a.getInteger和a.getInt
任何經驗?
解決方案,感謝Alex富
的getColor不能處理引用
它與
ColorStateList color = a.getColorStateList(R.styleable.PropertyView_propertyTextColor);
mTitleTextView.setTextColor(color);
善於思考,但可惜它並沒有解決它。 –
您是否將格式更改爲attrs.xml中的引用?如果是這樣,你是否也改變了'a.getColor()'方法?你應該嘗試使用'a.getColorStateList()'來代替。 'getColorStateList'可以理解純色和參考。 –
謝謝你,這是=)愚蠢getColor無法處理引用,但它可能有一個很好的理由。 –