I've been writing some Android apps but I don't really understand when to use app:
and when to use android:
. When styles are not being applied the way they're supposed to, I use trial and error and sometimes find that using app:
instead of android:
solves the issue but I don't understand why. It'd be great if someone could point me in the right direction. Thanks!
相关问题
- How can I create this custom Bottom Navigation on
- Bottom Navigation View gets Shrink Down
- How to make that the snackbar action button be sho
- Listening to outgoing sms not working android
- How to create Circular view on android wear?
相关文章
- android开发 怎么把图片放入drawable的文件夹下
- android上如何获取/storage/emulated/下的文件列表
- androidStudio有个箭头不认识
- SQLite不能创建表
- Windows - Android SDK manager not listing any plat
- Animate Recycler View grid when number of columns
- Why is the app closing suddenly without showing an
- Android OverlayItem.setMarker(): Change the marker
Sometime the property with android only available in new Android version like
In this case, you should use
app:...
to make it work with older version.You are talking about custom namespace.In android we can create custom views in additional to already available views. As per in Google developer docs.. To add a built-in View to your user interface, you specify it in an XML element and control its appearance and behavior with element attributes. Well-written custom views can also be added and styled via XML. To enable this behavior in your custom view, you must:
Define custom attributes for your view in a resource element Specify values for the attributes in your XML layout Retrieve attribute values at runtime Apply the retrieved attribute values to your view
Once you define the custom attributes, you can use them in layout XML files just like built-in attributes. The only difference is that your custom attributes belong to a different namespace. Instead of belonging to the http://schemas.android.com/apk/res/android namespace, they belong to http://schemas.android.com/apk/res/[your package name]
So for if you use default views you can use android namespace and if you want to set and use attributes for custom view you can define your own name.
Refer this
If you take a look at the beginning of the your layout xml files (in which you used
app:
) you will (probably) find lines like this:in this case
app:
namespace will be used for custom attributes, specified by you insideattrs.xml
file or by someone else in one of used libraries.You can use the app namespace to have app compatibility with older API versions.
For example app:srcCompat="@drawable/customborder" has the same effects with android:background="@drawable/customborder" The difference is that the first will work correctly with older API's and the second will not display what you would like.
moreover you will find two variants
the difference between xmlns lines is res-auto take care of resolving our package as sometime we will add .debug or .test in our package and we already provided the packageid of the app Ex: