【问题标题】:Getting ids of xml layout获取xml布局的id
【发布时间】:2014-10-03 11:53:40
【问题描述】:

我正在为 android 开发一个小注释处理器。

我有以下情况: 我有一个 xml 布局资源 ID,我想在这个 xml 布局中找到所有视图。我只是想解析 xml 布局文件以检索一些我将在以后使用的信息。

有人知道这样的工具是否存在或如何实现这样的东西吗?

我知道这并不简单。有很多事情需要考虑,例如:

  1. 不同布局资源文件夹中的相同布局文件,例如:

    • res/layout/mylayout.xml
    • res/layout-xlarge/mylayout.xml

    我想解析两个 mylayout.xml 文件。

  2. 我只有布局的资源 ID(整数),如何将其映射回 xml 文件(字符串、名称)

有什么建议吗?

我怀疑我可以使用 Android 类,因为我想编写一个注释处理器。 AnnotationProcessing 在编译 Android 资源之前运行在它自己的 jvm 中。

据我了解,工作流程应该如下:

  1. 将 id(整数)映射到布局文件名(字符串)。我想我必须 解析 R.java 类来实现这一点。
  2. 接下来我要检查 递归所有布局资源文件夹找到对应的 layout.xml 文件。
  3. 解析 xml 文件(没什么大不了的)

【问题讨论】:

标签: android


【解决方案1】:

如果需要特定id对应的资源名称,可以使用

String getResourceEntryName(int id)

这是Resources()的方法。 Here你可以找到文档

【讨论】:

  • 这是一个很好的起点,但我怀疑我可以使用 Android 类,因为我想编写一个注释处理器。 AnnotationProcessing 在编译 Android 之前在它自己的 jvm 中运行。
  • 我想是的。我不确定在开始编译之前是否会生成 R.java,但我认为每次保存文件时都会生成它(在 Android Studio 中)。所以我想我必须“解析” R.java 来获取名称(我已经更新了我的问题以说明一个简单的工作流程)。欢迎任何更好的方法。
  • 更多然后解析你可能会使用反射来获取R内容的地图
  • 好主意!我知道我会在 StackOverflow 上找到聪明人
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多