私はテキストビューの色を設定したいカスタムビューを持っています。カスタムattr get colorは無効な値を返します
私が持っている
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を返し続けます。私は私がこの問題や提案をa.getIntegerとa.getInt
誰でも経験をしようとしたの-16777216
値を取得することを行うと、私も#000 に色を設定しようとした ?
ソリューション、アレックス・フーのおかげで
GETCOLORは、それはしかし、あなたはあなたの例では、色への参照を使用している
ColorStateList color = a.getColorStateList(R.styleable.PropertyView_propertyTextColor);
mTitleTextView.setTextColor(color);
良い思考が、それはそれを解決していなかった、あまりにも悪いです。 –
attrs.xmlで参照する形式を変更しましたか?もしそうなら、 'a.getColor()'メソッドも変更しましたか?代わりに 'a.getColorStateList()'を使ってみるべきです。 'getColorStateList'は単色と参照の両方を理解できます。 –
ありがとうございました。それはgetColorが参照を扱うことができない愚かでしたが、それはおそらく理由があります。 –