【问题标题】:Change drawable xml content programmatically以编程方式更改可绘制的 xml 内容
【发布时间】:2016-11-09 18:25:03
【问题描述】:

我们在列表视图中有一个复选框,其背景图像需要根据列表视图项的内容进行更改,例如 gmail 电子邮件列表视图。

我们现在的方法是使用android:button="@drawable/startcheckbox" 选项设置复选框背景,其中startcheckbox 是可绘制文件夹中的一个xml,其中包含:

<?xml version="1.0" encoding="utf-8"?>
    <selector  xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="false" android:drawable="@drawable/star_rate_white_54x54" />
        <item android:state_checked="true" android:drawable="@drawable/star_rate_yellow_54x54" />
        <item android:drawable="@drawable/star_rate_white_54x54" /> <!-- default state -->
    </selector>

我的问题是我们如何从填充列表视图的片段内部更改state_checked="false"state_checked="true"

【问题讨论】:

  • 你不能在android上以编程方式更改xml资源文件的内容。
  • 使用不同的资源文件
  • StateListDrawable文档

标签: android xml listview


【解决方案1】:

通过 Drawable.mutate() 改变drawable,然后你可以改变你想要的任何东西。

虽然我确实发现,如果您想对可绘制对象进行任何编程而不是缩放它,但总的来说,您最好避免使用 xml 并使用代码和自定义可绘制对象。

【讨论】:

  • 不是,StateListDrawable 的 API 非常有限,实际上你只能添加一个新状态到:addState (int[] stateSet, Drawable drawable)
  • 我以前做过,我看看能不能把代码挖出来。我认为我覆盖了同一个状态?
猜你喜欢
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多