.NET for Android warning XA1005

Example messages

warning XA1005: Attempting basic type name matching for element with ID '@+id/text1' and type 'android.widget.TextView'
warning XA1005: If basic type name matching fails, please add a `xamarin:managedType` attribute to the element to specify the fully qualified managed type name of the element.

Issue

When Layout Bindings and Code-Behind are enabled, this warning will be emitted for every layout element that has the //*/@android:id attribute set and uses a fully qualified name for the element type.

For example, the warning will be emitted for both of the following elements:

<android.widget.TextView
    android:id="@+id/text1" />
<Android.Widget.TextView
    android:id="@+id/text2" />

But it will not be emitted for elements that use just an unqualified class name like:

<TextView
    android:id="@+id/text1" />

The "basic type name matching" tries to ensure that any fully qualified type name is a C# name rather than a Java name. First it checks a short list of known mappings between Java namespaces and C# namespaces, such as the mapping of android.view to Android.Views. For any remaining namespaces, it splits the namespace on . and capitalizes each part.

Solution

To resolve this warning, change each element to use its unqualified C# class name or add a xamarin:managedType attribute to each element to specify the fully qualified C# name.