Android上使用的XML文件(如AndroidManifest.xml或布局)的架构(DTD或XML架构在哪里?
这些模式不作为xml文件存在。模式取决于程序使用的UI类。有一个更好的讨论here。
[通常,用XML定义名称空间不必是真实的现有URL,而只是一个全球唯一的String(因此,人们更喜欢使用自己的URL)。当然,如果此URL包含XML模式(或者更糟的是DTD),那就很好了。如果有人创建Android Ressource Schemata,那也将非常好。我可以帮助他成为CS的学士学位论文。 -柏林Solymosi教授
XML模式似乎没有记录,但是这里有一个有用的列表,列出了所有布局对象及其允许的属性:
http://developer.android.com/reference/android/R.styleable.html#lfields
[围绕同一主题进行搜索,以了解android studio如何完成XML的自动完成和工作,我也很希望找到一些XSD或其他东西,但是:
在Android中,我们混合使用静态和动态DOM定义:
1-某些文件是使用类和注释定义的,请参见清单(例如:要获得正确的信息,您应该可能会使用合并的清单,但这超出了此文档)。
2-其他信息是从资源中读取的,使用命名约定来查找包含与给定XML标记相关的attr的可样式化。例如,如果我们将标签识别为与View子类相对应在布局文件(例如“ TextView”)中,我们找到了相应的样式化,查看它包含的attrs并注册DOM扩展对应于这些属性资源的给定标签。看到AttributeProcessingUtil和SubtagsProcessingUtil用于读取的代码styleables和AndroidDomExtender作为插入的扩展DOM系统。
3-有时,可样式化是静态确定的,但是会动态读取属性以与使用的平台版本保持最新在项目中。这是使用@Styleable注释完成的。
例如,这是在Android Studio的源代码中定义形状可绘制XML的方式:
@DefinesXml
@Styleable("GradientDrawable")
public interface Shape extends DrawableDomElement {
@Styleable("DrawableCorners")
List<DrawableDomElement> getCornerses();
@Styleable("GradientDrawableGradient")
List<DrawableDomElement> getGradients();
@Styleable("GradientDrawablePadding")
List<DrawableDomElement> getPaddings();
@Styleable("GradientDrawableSize")
List<DrawableDomElement> getSizes();
@Styleable("GradientDrawableSolid")
List<DrawableDomElement> getSolids();
@Styleable("GradientDrawableStroke")
List<DrawableDomElement> getStrokes();
}
样式元素(例如GradientDrawablePadding)在android的attrs.xml中定义