单声道android的Java反射

Jag*_*raj 2 c# java reflection android xamarin.android

我正面临着WRAP_CONTENT无法工作RecyclerView,所以我用Google搜索并找到了解决方法.当我尝试在c#中实现变通方法时,我被困在这一行:

insetsDirtyField = RecyclerView.LayoutParams.class.getDeclaredField("mInsetsDirty");
Run Code Online (Sandbox Code Playgroud)

在这里,我尝试移植原始的Java代码,并在gist中移植代码

jon*_*onp 13

我被困在这条线上:

insetsDirtyField = RecyclerView.LayoutParams.class.getDeclaredField("mInsetsDirty");
Run Code Online (Sandbox Code Playgroud)

.classJava中的"关键字"等同typeof()于C#中的关键字,因此这是(kinda/sorta),如:

var insetsDirtyField = typeof(RecyclerView.LayoutParams).GetDeclaredField("mInsetsDirty");
Run Code Online (Sandbox Code Playgroud)

除非它不是,因为typeof()返回a 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");
Run Code Online (Sandbox Code Playgroud)