我一直在编写Android应用程序,但我不太理解何时使用app:
和何时使用android:
。 当样式未按预期应用时,我会尝试使用一些试错方法,有时会发现使用app:
而不是android:
可以解决问题,但我不知道原因。如果有人能指点我正确的方向,那就太好了。谢谢!
我一直在编写Android应用程序,但我不太理解何时使用app:
和何时使用android:
。 当样式未按预期应用时,我会尝试使用一些试错方法,有时会发现使用app:
而不是android:
可以解决问题,但我不知道原因。如果有人能指点我正确的方向,那就太好了。谢谢!
您可以使用app命名空间来实现与旧API版本的应用兼容性。
例如,app:srcCompat="@drawable/customborder" 与android:background="@drawable/customborder"具有相同的效果。不同之处在于,第一个将正确地在旧API上运行,而第二个则不能显示您想要的结果。
如果你查看你的布局XML文件(其中你使用了app:
),你可能会在开头找到像这样的行:
<?xml version="1.0" encoding="utf-8"?>
<SOME_LAYOUT xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:
命名空间将用于您在 attrs.xml
文件中指定的自定义属性,或者由使用的库之一中的其他人指定的属性。app:...
来确保它能在旧版本上正常工作。xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/[packagename]"
xmlns行之间的区别在于res-auto会解析我们的包名,因为有时我们会在包名中添加.debug或.test,而我们已经提供了应用程序的包ID。例如:
xmlns:app="http://schemas.android.com/apk/com.test.io.debug"
xmlns:app="http://schemas.android.com/apk/com.test.io.test"
xmlns:and="http://schemas.android.com/apk/res/android"
,则可以使用and:
代替android:
)。 - Selvin