为何Android DataBinding不支持自定义Android命名空间名称?
Android DataBinding 命名空间前缀修改导致编译错误问题
我之前也碰到过一模一样的问题——在使用DataBinding的布局文件里,绝对不能修改默认的Android命名空间前缀(android:),只要改成自定义前缀比如a:这类,就会直接触发编译错误。
可正常编译的代码示例
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="object" type="<PATH_TO_DATA_CLASS>"/> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"/> </layout>
触发编译错误的代码示例(修改了命名空间前缀)
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:a="http://schemas.android.com/apk/res/android"> <data> <variable name="object" type="<PATH_TO_DATA_CLASS>"/> </data> <LinearLayout a:layout_width="match_parent" a:layout_height="match_parent"/> </layout>
问题根源
这是因为DataBinding编译器在生成绑定类时,依赖默认的android:命名空间来识别系统自带的布局属性和视图标签。一旦你替换了这个前缀,编译器就无法正确解析这些系统级属性,自然会抛出编译错误。所以在DataBinding布局中,必须保留android:作为Android系统命名空间的前缀,不能随意自定义替换。
内容的提问来源于stack exchange,提问作者vera
相关产品推荐
相关产品推荐

