【发布时间】:2015-02-25 00:19:36
【问题描述】:
我制作了一个自定义的多层可绘制对象作为按钮的背景。有时,我希望这个可绘制层的一部分是蓝色的。有时我希望它是绿色的。关键是,它是一个变量,我希望它可以在关联的自定义视图 XML 中定义。
这可能吗?如何在 XML 中编写可在运行时确定其值的可绘制对象?
custom_button.xml
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="?attr/colorButtonNormal" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
</inset>
<solid android:color="?attr/colorButtonNormal" /> 行是我想在运行时设置的。我的这个类的自定义视图已经接收到我想在这里使用的颜色值 - 我如何将它应用到这个可绘制对象的 XML 中?
【问题讨论】:
-
不知道是否有办法在运行时以编程方式修改自定义逻辑。您可能只需要创建两个 custom_button.xml 文件并在需要时适当地选择它们。
-
@JaySnayder 我实际上正在尝试为自定义按钮视图创建一个库,让我可以轻松修改此可绘制对象中使用的值
-
将形状提取到可绘制对象中,然后您可以更改它:stackoverflow.com/questions/7164630/…
标签: android android-layout android-drawable android-attributes