37

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

4

5 回答 5

15

架构不作为 xml 文件存在。模式取决于您的程序使用的 UI 类。这里有一个稍微好一点的讨论。

于 2009-03-06T05:08:37.717 回答
7

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

于 2012-02-14T13:57:18.413 回答
3

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

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

于 2012-11-21T12:45:17.233 回答
2

一直在搜索同一主题以了解 android studio 如何在 XML 中完成自动完成和内容,我也希望找到一些 XSD 或其他东西,但是:

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

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

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

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();
}

styleables(如 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。爪哇

于 2020-04-26T11:54:20.880 回答
0

如果您遇到了模式http://schemas.android.com/apk/res/android被识别等问题,您可以在Settings (或Preferences ) > Languages & Frameworks > Schemas and DTDs下添加它。单击“忽略的架构和 DTD”下的 + 号并添加架构 URL。您不应再收到代码错误/警告。

于 2021-05-11T16:21:36.027 回答