【问题标题】:Does Android data-binding support raw resources?Android 数据绑定是否支持原始资源?
【发布时间】:2016-02-03 17:13:09
【问题描述】:

我目前正在尝试使用新的 Android 数据绑定机制将原始资源的资源 ID 传递给特殊视图。当我尝试这样的事情时

...
    app:bufferedSvg="@{ViewModel.headerCollapsed ? @raw/header_expand : @raw/header_collapse}"
...

我收到一个错误<expr> expected, got '@'。原始资源存在,因为它们包含 SVG 数据,所以不能转换为另一种资源。

这是 Android 数据绑定的错误还是预期的行为?

【问题讨论】:

  • bufferedSvg 的 setter 方法或可绑定属性是什么样的?
  • 我使用@BindingAdapter 注释编写了一个自定义设置器,该注释将int 作为输入参数。 View 本身没有这个属性。

标签: android android-databinding


【解决方案1】:

至少我同时找到了解决方法。导入 R 类:

<data>
    <import type="com.yourdomain.R"/>
    <variable name="ViewModel" type="com.yourdomain.ViewModel"/>
</data>

...

<com.yourdomain.yourview

    ...

    app:bufferedSvg="@{ViewModel.yourchoice ? R.raw.raw_resource1 : R.raw.raw_resource2}"

    ...

/>

希望这可以帮助遇到同样问题的人。仍然想知道是否计划支持原始资源的@-notation。

【讨论】:

  • 你救了我的命。谢谢!
猜你喜欢
  • 2019-11-05
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
相关资源
最近更新 更多