在看了Fede的UberMusic后,我遇到了文件album_screen.xml。以下是该文件的来源。基本上我注意到他的主题能够使用作为其应用程序一部分的自定义视图,并且他们在顶部{{1}}具有此XML命名空间。我错过了关于他如何将他的属性应用于他无法控制的视图的连接,以及Eclipse将如何编译下面的鳕鱼。我将URL theme
放入浏览器的地址栏但没有出现,我无法弄清楚Eclipse在何处/如何知道命名空间支持的属性。提前感谢您的帮助。
http://schemas.uberdroidstudio.com/theme
答案 0 :(得分:0)
我怀疑theme:textFilter="uppercase"
行实际上并没有对(显然是vanilla)TextView产生影响。
对于命名空间的URL,有趣的是你无法访问它,因为它似乎不是本地样式的(Android会让你将本地可调节的命名空间称为http://schemas.android.com/apk/res/your.package
) 。 +1新奇。
答案 1 :(得分:0)
解决方案实际上没有我原先想象的那么复杂。 XML名称空间是任意字符串,只需要是唯一的。如果您的命名空间不以http://schemas.android.com/apk/res
开头,则不会对其进行验证,并且不会检查APK包中的declare-styleable
等。
现在是一个自定义命名空间,如果实现起来非常简单,如GitHub中的code snippet所示。最后,将自定义XML属性应用于“普通”小部件可以通过使用LayoutInflater.Factory
并在扩充视图之前调用setFactory
来完成。把它们放在一起,你就拥有了一个高度主题化,XML驱动的应用程序,比如Fede的UberMusic。