I have implemented a custom layout, inherited from
FrameLayout. Base class,
ViewGroup, provides couple of virtual methods that return
ViewGroup.LayoutParams, and descendant classes are supposed to override them, returning subclasses, like
Here comes the problem - C# version of
FrameLayout (and hence my subclass) has those methods return
ViewGroup.LayoutParams, but generated Java code causes an error, because Java version of
FrameLayout.LayoutParams, and can not be overriden by a method with a more generic return value.
Class Java C# ViewGroup VG.LP Foo() FrameLayout FL.LP Foo() --> VG.LP Foo() MyLayout cannot override! <-- VG.LP Foo()
Actually, Xamarin does not generate an overridden method in
FrameLayout at all, so it stays with base return type.
This leads me to my question: is there a way to control / override the return type of generated Android-callable Java method?
Of course, I can just roll up my sleeves and rewrite my class to inherit from
ViewGroup directly (there ain't much code in
FrameLayout, after all), but is there a language-level solution? It's not like I can modify how Xamarin binds to Android code, isn't it?