微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

你好.
在我的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变量?

谢谢!

解决方法:

我在意大利启动场景中看到了您的帮助请求.

不幸的是,根据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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。