Java 单声道反射 android

Java reflection for mono android

我正面临 WRAP_CONTENT not work on a RecyclerView ,所以我用谷歌搜索并找到了解决方法。当我尝试在 C# 中实现解决方法时,我被困在这一行:

insetsDirtyField = RecyclerView.LayoutParams.class.getDeclaredField("mInsetsDirty");

这里我尝试移植了原文java code,and ported code avilable in gist

I was stuck at this line:

insetsDirtyField = RecyclerView.LayoutParams.class.getDeclaredField("mInsetsDirty");

Java中的.class“关键字”等同​​于C#中的typeof()关键字,所以这是(kinda/sorta)如:

var insetsDirtyField = typeof(RecyclerView.LayoutParams).GetDeclaredField("mInsetsDirty");

除了它不是,因为 typeof() returns 一个 System.Type,它对 java.lang.Object 个实例一无所知。

相反,您应该使用 Java.Lang.Class.FromType(Type) 获得一个 Java.Lang.Class 实例,这样您就可以使用 Java 反射:

var klass = Java.Lang.Class.FromType (typeof (RecyclerView.LayoutParams));
var insetsDirtyField = klass.GetDeclaredField("mInsetsDirty");