Android AppCompatButton获取代码中的背景色(colorButtonNormal/colorAccent)(棒棒糖v21+;)

Android AppCompatButton获取代码中的背景色(colorButtonNormal/colorAccent)(棒棒糖v21+;),android,xamarin,Android,Xamarin,我有一段代码,可以在膨胀后对视图进行迭代,所以我可以热交换某些颜色 我目前面临的问题是读取AppCompatButton运行时使用的当前颜色。我知道它在某些情况下是由我的AccentColor着色的,但我不知道在视图上以编程方式在何处找到该颜色 我一直在使用反射并检查RippleDrawable(AppCompatButton.Background)及其子项的私有字段。但我还是一无所获。我找不到颜色和ColorStateList为空,色调为空,绘制对象的当前颜色为白色,等等 我已经在GitHub

我有一段代码,可以在膨胀后对视图进行迭代,所以我可以热交换某些颜色

我目前面临的问题是读取AppCompatButton运行时使用的当前颜色。我知道它在某些情况下是由我的AccentColor着色的,但我不知道在视图上以编程方式在何处找到该颜色

我一直在使用反射并检查RippleDrawable(AppCompatButton.Background)及其子项的私有字段。但我还是一无所获。我找不到颜色和ColorStateList为空,色调为空,绘制对象的当前颜色为白色,等等

我已经在GitHub上查看了Android源代码,但是我还没有找到解决方案,如果有任何帮助,我将不胜感激

为了澄清,我知道正在使用什么颜色,但我需要检查特定的AppCompatButton是否使用特定的颜色

更新1
似乎以下两个xml定义了AppCompatButton:

第二个xml使用android:tint=“?attr/colorButtonNormal”定义了一个形状,这将是我试图从中提取信息的GradientDrawable


明天我将再次尝试,看看是否无法从GradientDrawable中提取色调…

我在我的特定案例和Android操作系统版本中找到了颜色。它是McColor,在mTintFilter内部,在GradientDrawable内部


层次结构:AppCompatButton.Background.GetDrawable(0.Drawable.mTintFilter.mColor

在我的特定案例和Android操作系统版本中,我找到了颜色。它是McColor,在mTintFilter内部,在GradientDrawable内部

层次结构:AppCompatButton.Background.GetDrawable(0.Drawable.mTintFilter.mColor