回答
在 Hamibot 中,动态修改按钮背景色需要通过 UI 控件的 id 获取实例,并使用 attr() 方法或 Android 原生颜色方法进行修改。以下是完整示例和关键注意事项:
// 文档地址 https://docs.hamibot.com/
"ui";
ui.layout(
<vertical padding="16">
<button id="targetBtn" text="点击修改背景色" bg="#cccccc" />
</vertical>
);
// 在 UI 线程中直接修改
ui.targetBtn.on("click", function() {
// 推荐方式:通过 attr 修改 bg 属性
ui.targetBtn.attr("bg", "#ff5722");
});
// 若在非 UI 线程(如定时器、网络回调)中修改,需用 ui.run 包裹
setTimeout(function() {
ui.run(function() {
ui.targetBtn.attr("bg", "#4caf50");
});
}, 3000);
关键说明
- 必须设置
id:布局中的按钮需声明id属性,代码中通过ui.控件id访问。 - 颜色格式:支持
#RRGGBB或#AARRGGBB(含透明度)十六进制字符串。例如#ff0000(红色)、#800000ff(半透明蓝色)。 - 线程安全:Hamibot 的 UI 操作必须在 UI 线程执行。若从后台线程修改背景色,必须使用
ui.run()包裹,否则会抛出异常。 - 替代方案:如需使用 Android 原生 API,可引入
colors模块:但var colors = require("colors"); ui.targetBtn.setBackgroundColor(colors.parseColor("#2196f3"));attr("bg", "...")更简洁且符合 Hamibot UI 框架的设计习惯。
避免使用箭头函数、默认参数等 ES6+ 语法,以确保在 Rhino 1.7.15 引擎中稳定运行。如有其他 UI 动态控制需求,可继续提供具体场景。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实