2016-11-24 20 views
2

テーマのデフォルトの色の値をプログラムで取得する必要があります(例:windowBackground、colorPrimary)。アクティビティからコードを実行しています。私のターゲットのandroid APIは21です。私はTheme.Material themeを使用しています。異なるリソース識別子とAndroid(Xamarin)で現在のテーマの色を取得する方法

var attributeValue = new Android.Util.TypedValue(); 
this.Theme.ResolveAttribute(Resource.Attribute.colorPrimary, attributeValue, true) 

、私はいつもAndroid.Util.DataType.Null値を取得:私が試してみました。

+0

は、あなたが私の答えをチェックしませんでした? – Ironman

答えて

1

使用私はWindowBackgroundについて

をテストしてきたこのコード:

コード:

Android.Util.TypedValue a = new Android.Util.TypedValue(); 
Theme.ResolveAttribute(Android.Resource.Attribute.WindowBackground, a , true); 
var windowBackgroundDrawable = Application.Context.GetDrawable(a.ResourceId);  
var windowBackgroundColor = ((Android.Graphics.Drawables.ColorDrawable)windowBackgroundD‌​rawable).Color; 

出力私の場合は、次のとおりです。FAFAFA

この使用ColorPrimaryの場合:

コード:

Android.Util.TypedValue a = new Android.Util.TypedValue(); 
Theme.ResolveAttribute(Android.Resource.Attribute.ColorPrimary, a , true); 
var colorPrimarya = Application.Context.GetDrawable(a.ResourceId);  
var colorPrimary = ((Android.Graphics.Drawables.ColorDrawable) colorPrimarya).Color; 

出力私の場合は、次のとおりです。0072BA

+0

ありがとうございます。私は欠けているものを見た。あなたのコードでは、実際の色を得るためにいくつかの改善が必要でした:_var windowBackgroundDrawable = Application.Context.GetDrawable(a.ResourceId); var windowBackgroundColor =((Android.Graphics.Drawables.ColorDrawable)windowBackgroundDrawable).Color; _ソリューションに追加できますか? – Kalitsov

+0

@Kalitsov私はあなたが他人を助けるので、受け入れの回答としてマークすることができます更新しました。 – Ironman

+0

はい、原因の。 2番目のスニペットも更新してください。だから一貫性があります。 – Kalitsov

関連する問題