android - 如何在 res/values/dimens.xml 中使用主题定义的变量?

标签 android xml themes

你好。 在我的 themes.xml 定义中,我有以下内容:

<style name="mythemename">
     <item name="d_myvar">100dip</item>
</style>

我希望能够像这样在 res/values/dimens.xml 中引用它:

<dimen name="myvar">?d_myvar</dimen>

唉,这行不通。当我尝试使用 @dimen/myvar 作为 LinearLayout 的高度时,应用程序崩溃并显示错误“您必须提供布局高度属性。”

我也试过

  <dimen name="myvar" value="?d_myvar" />

但是那不会编译。

如何在我的 xml 中定义 @dimen/myvar 以便它加载主题中定义的 ?d_myvar 变量?

谢谢!

最佳答案

我在 Italian Startup Scene 上看到了您的帮助请求。

不幸的是,根据syntax of the dimen tag :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen
        name="dimension_name"
        >dimension</dimen>
</resources>

你根本做不到。事实上,您可以在语法指定时引用主题属性:

 ?[package:][type:]name

解决方案:

  • Gix's answer将是定义和重用维度的标准方法。

  • 也许您可以重新组织代码以重用d_myvar through inheritance ?

  • 作为最后和绝望的手段,我会选择一个 shell 脚本,它使用 xml 命令行工具自动执行变量替换过程。我从来没有亲自使用过它们,但例如参见 xmllint , xmlstarletthis article .

关于android - 如何在 res/values/dimens.xml 中使用主题定义的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5971749/

相关文章:

Android stripe 收款?

php - 如何更改XML节点值?

android - 如何应用主题以获得准确的 View ?

java - 我需要读取一个xml文件并将每个标签的id更改为id+tagname

java - 如何从 menu.xml 打开到 WebView 的链接

php - Moodle主题升级使网站无法使用

android - 覆盖引用的样式属性

android - 如何在谷歌文档查看器中显示文档时删除默认边框和工具栏

android - 安卓版 Qt : change the application icon

android - Espresso 测试禁用动画