Android项目上XML文件的架构在哪里?

问题描述 投票:35回答:4

Android上使用的XML文件(如AndroidManifest.xml或布局)的架构(DTD或XML架构在哪里?

xml android schema dtd
4个回答
15
投票

这些模式不作为xml文件存在。模式取决于程序使用的UI类。有一个更好的讨论here


5
投票

[通常,用XML定义名称空间不必是真实的现有URL,而只是一个全球唯一的String(因此,人们更喜欢使用自己的URL)。当然,如果此URL包含XML模式(或者更糟的是DTD),那就很好了。如果有人创建Android Ressource Schemata,那也将非常好。我可以帮助他成为CS的学士学位论文。 -柏林Solymosi教授


3
投票

XML模式似乎没有记录,但是这里有一个有用的列表,列出了所有布局对象及其允许的属性:

http://developer.android.com/reference/android/R.styleable.html#lfields


0
投票

[围绕同一主题进行搜索,以了解android studio如何完成XML的自动完成和工作,我也很希望找到一些XSD或其他东西,但是:

在Android中,我们混合使用静态和动态DOM定义:

1-某些文件是使用类和注释定义的,请参见清单(例如:要获得正确的信息,您应该可能会使用合并的清单,但这超出了此文档)。

2-其他信息是从资源中读取的,使用命名约定来查找包含与给定XML标记相关的attr的可样式化。例如,如果我们将标签识别为与View子类相对应在布局文件(例如“ TextView”)中,我们找到了相应的样式化,查看它包含的attrs并注册DOM扩展对应于这些属性资源的给定标签。看到AttributeProcessingUtil和SubtagsProcessingUtil用于读取的代码styleables和AndroidDomExtender作为插入的扩展DOM系统。

3-有时,可样式化是静态确定的,但是会动态读取属性以与使用的平台版本保持最新在项目中。这是使用@Styleable注释完成的。

https://android.googlesource.com/platform/tools/adt/idea/+/refs/heads/mirror-goog-studio-master-dev/android/src/org/jetbrains/android/dom/README.md

例如,这是在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中定义

https://android.googlesource.com/platform/tools/adt/idea/+/refs/heads/mirror-goog-studio-master-dev/android/src/org/jetbrains/android/dom/drawable/Shape.java

© www.soinside.com 2019 - 2024. All rights reserved.