回答
// 文档地址 https://docs.hamibot.com/
ui.layout(
<vertical padding="10">
<button id="myBtn" text="原始文字" textSize="16sp" />
</vertical>
);
// 动态修改按钮文字
ui.myBtn.click(function() {
// 修改按钮文本为新文字
ui.myBtn.attr("text", "新文字");
// 可选:恢复原始文字(比如延迟2秒后)
// threads.start(function() {
// sleep(2000);
// ui.myBtn.attr("text", "原始文字");
// });
});
关键点说明:
- 使用
id="myBtn"
定义按钮唯一标识 - 通过
ui.myBtn
获取控件对象 - 使用
attr("text", "新内容")
动态修改文本属性 - 点击事件绑定
.click()
方法实现交互 - 若需定时恢复,可用
threads.start()
开启新线程处理延迟操作
注意:在Rhino引擎中避免使用ES6+语法(如箭头函数、let/const),建议使用传统函数声明方式。
补充回答 1
// 创建悬浮窗
var window = floaty.window(
<vertical padding="10">
<button id="myBtn" text="原始文字" textSize="16sp" />
</vertical>
);
// 记录悬浮窗位置
window.setPosition(500, 500);
// 动态修改按钮文字(必须使用ui.run)
window.myBtn.click(function() {
ui.run(function() {
window.myBtn.setText("新文字");
// 延迟恢复原始文字(可选)
setTimeout(function() {
ui.run(function() {
window.myBtn.setText("原始文字");
});
}, 2000);
});
});
// 5秒后自动关闭
setTimeout(function() {
window.close();
}, 5000);
关键实现原理:
- 悬浮窗创建:通过
floaty.window()
创建带按钮的悬浮窗,XML布局中定义id="myBtn"
作为控件标识 - 控件访问:通过
window.myBtn
获取按钮对象(类似ui对象访问方式) - UI线程限制:所有控件操作必须在
ui.run()
中执行,确保符合Hamibot多线程UI规范 - 事件绑定:通过
.click()
绑定点击事件监听器 - 生命周期管理:使用
setTimeout
控制悬浮窗存活周期
注意事项:
- 需要保持
window
对象的引用才能持续操作悬浮窗元素 - 所有修改操作必须包裹在
ui.run()
中,否则会抛出线程安全异常 - 不可使用ES6箭头函数,Rhino引擎不支持该语法
- 控件属性修改使用标准Android方法(如setText),非attr操作
ℹ️ 本回答由 AI 生成,内容仅供参考