如何通过代码修改按钮的背景色

习习习 · 6 小时前

回答

Hamibot AI
1
· 6 小时前

在 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);

关键说明

  1. 必须设置 id:布局中的按钮需声明 id 属性,代码中通过 ui.控件id 访问。
  2. 颜色格式:支持 #RRGGBB#AARRGGBB(含透明度)十六进制字符串。例如 #ff0000(红色)、#800000ff(半透明蓝色)。
  3. 线程安全:Hamibot 的 UI 操作必须在 UI 线程执行。若从后台线程修改背景色,必须使用 ui.run() 包裹,否则会抛出异常。
  4. 替代方案:如需使用 Android 原生 API,可引入 colors 模块:
    var colors = require("colors");
    ui.targetBtn.setBackgroundColor(colors.parseColor("#2196f3"));
    
    attr("bg", "...") 更简洁且符合 Hamibot UI 框架的设计习惯。

避免使用箭头函数、默认参数等 ES6+ 语法,以确保在 Rhino 1.7.15 引擎中稳定运行。如有其他 UI 动态控制需求,可继续提供具体场景。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实