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

发布于 2024-07-14 23:33:39 字数 75 浏览 6 评论 0 原文

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

Where are the schemas (DTD or XML schema) for the XML files used on Android like AndroidManifest.xml or the layouts?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

假装爱人 2024-07-21 23:33:39

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

The schemas don't exist as an xml file. Schemas are dependent upon what UI classes your program uses. There's a slightly better discussion here.

债姬 2024-07-21 23:33:39

一般来说,在 XML 中定义命名空间不必是真实存在的 URL,而只需是全球唯一的字符串(因此人们更喜欢使用自己的 URL)。 当然,如果该 URL 包含 XML 架构(或更糟糕的是 DTD),那就太好了。 如果有人能够创建 Android 资源架构,那就太好了。 我可以帮助他完成计算机科学学士论文。 - Solymosi 教授,柏林

Generally, defining a namespace in XML doesn't has to be a real existing URL but just a world wide unique String (therefore one prefers using their own URLs). Of course, it's nice if this URL contains the XML-schema (or worse, DTD). It would be also very nice if someone would create Android Ressource Schemata. I could help him as a bachelor thesis in CS. - Prof. Solymosi, Berlin

绮烟 2024-07-21 23:33:39

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

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

The XML schema doesn't seem to be documented, but there is a useful list of all the layout objects and their permitted attributes here:

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

2024-07-21 23:33:39

一直在围绕同一主题进行搜索,以了解 android studio 如何进行自动完成和自动完成功能。 XML 中的东西,我也希望找到一些 XSD 之类的东西,但是:

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

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

2-其他信息是从资源中读取的,使用命名约定来查找包含与给定 XML 标记相关的属性的样式。
例如,如果我们将标签识别为对应于 View 子类
在布局文件(例如“TextView”)中,我们找到相应的
styleable,查看它包含的 attrs 并注册 DOM 扩展
对于与这些 attr 资源相对应的给定标签。 看
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

Been searching around the same subject to find out how android studio does the autocomplete & stuff in XML, and I too was hopeful to find some XSD or something, but:

In Android we use a mixture of static and dynamic DOM definitions:

1-Some files are defined using classes and annotations, see for example Manifest (note: to get correct information you should most
likely use the merged manifest, but that's outside of the scope of
this doc).

2-Other information is read from resources, using naming conventions to find a styleable that contains attrs relevant to a given XML tag.
For example if we recognize a tag as corresponding to a View subclass
in a layout file (e.g. “TextView”), we find the corresponding
styleable, look at the attrs it contains and register DOM extensions
for the given tag that correspond to these attr resources. See
AttributeProcessingUtil and SubtagsProcessingUtil for code that reads
styleables and AndroidDomExtender for the extension that plugs into
the DOM system.

3-Sometimes the styleable is determined statically, but the attrs are read dynamically to stay up to date with the platform version used
in the project. This is done using the @Styleable annotation.

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

For example this is how a shape drawable XML is defined in source codes of android studio:

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

The styleables (like GradientDrawablePadding) are defined in android's 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

放飞的风筝 2024-07-21 23:33:39

如果您在识别 http://schemas.android.com/apk/res/android 等架构时遇到问题,可以将其添加到设置下(或首选项)> 语言和 框架 > 架构和 DTD。 单击“忽略的架构和 DTD”下的 + 号并添加架构 URL。 您不应再收到代码错误/警告。

If you've had a problem with a schema like http://schemas.android.com/apk/res/android being recognised, you can add it under Settings (or Preferences) > Languages & Frameworks > Schemas and DTDs. Click the + sign, under 'Ignored schemas and DTDs' and add the schema URL. You should no longer get code errors/warnings.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文