floaty.window xml模式 RadioGroup 如何获取当前所选的值
xml 格式 设置seekbar 初始值
xml 格式 设置button 按钮上文字
回答
要获取 floaty.window 中 RadioGroup 的当前选中值,需通过以下步骤实现:
- 
获取 RadioGroup引用
 通过悬浮窗对象直接访问 XML 中定义的RadioGroup(假设id="rg"):var radioGroup = window.rg;
- 
获取选中项的 ID 
 调用getCheckedRadioButtonId()获取当前选中的RadioButton的资源 ID:var selectedId = radioGroup.getCheckedRadioButtonId();
- 
获取选中项的文本 
 使用findViewById()通过 ID 获取RadioButton实例并读取文本:var selectedRadioButton = radioGroup.findViewById(selectedId); var selectedText = selectedRadioButton.getText();
- 
完整示例代码 
 需在ui.run()中确保 UI 线程操作:// 文档地址 https://docs.hamibot.com/ var window = floaty.window( <vertical id="rg"> <radiogroup id="rg" orientation="vertical"> <radio text="选项A" /> <radio text="选项B" /> <radio text="选项C" /> </radiogroup> <button id="btn">获取选中值</button> </vertical> ); window.btn.click(function () { ui.run(function () { var selectedId = window.rg.getCheckedRadioButtonId(); if (selectedId != -1) { // -1 表示无选中 var selectedRadioButton = window.rg.findViewById(selectedId); toast("选中: " + selectedRadioButton.getText()); } else { toast("未选中"); } }); });
关键点说明:
- getCheckedRadioButtonId()返回选中项的资源 ID,若无选中项则返回- -1。
- 所有对控件的操作必须在 ui.run()中执行,避免线程安全问题。
- findViewById()需作用于- RadioGroup而非- window,确保查找范围正确。
补充回答 1
在 Hamibot 的 XML 布局中,SeekBar 控件不支持直接通过 progress 属性设置初始值。你需要通过 JavaScript 代码在创建 UI 后手动设置初始进度。
✅ 正确做法
- 
在 XML 中定义 SeekBar并指定id<vertical> <seekbar id="sb" /> </vertical>
- 
在 JS 中获取 SeekBar引用并设置初始值
 使用setMax()设置最大值(可选),再用setProgress()设置初始值:// 文档地址 https://docs.hamibot.com/ var window = floaty.window( <vertical> <seekbar id="sb" /> </vertical> ); // 设置最大值(可选) window.sb.setMax(100); // 设置初始值 window.sb.setProgress(50);
⚠️ 注意事项
- SeekBar的- progress属性在 XML 中不生效,必须通过代码设置。
- 所有对控件的操作(如 setMax()、setProgress())都需在floaty.window()创建之后执行。
- 若需监听 SeekBar的变化,可使用.on("progress", function(progress) { ... })方法。
📌 示例:完整 UI 与交互
// 文档地址 https://docs.hamibot.com/
var window = floaty.window(
  <vertical padding="10">
    <text id="valueText" text="当前值:0" textSize="16sp" />
    <seekbar id="sb" layout_weight="1" />
  </vertical>
);
window.sb.setMax(100);
window.sb.setProgress(50);
window.valueText.setText("当前值:" + window.sb.getProgress());
window.sb.on("progress", function(progress) {
  window.valueText.setText("当前值:" + progress);
});
✅ 小结
在 Hamibot 中,SeekBar 的初始值需通过 setProgress() 方法在 JavaScript 中设置,XML 不支持直接配置初始进度。通过获取控件引用并调用方法,即可灵活控制进度条的初始状态。
补充回答 2
在 Hamibot 的 XML 布局中,设置 Button 按钮上的文字非常简单,只需使用 text 属性即可。
✅ 设置按钮文字的 XML 写法
在定义 <button> 标签时,直接添加 text 属性,属性值就是按钮上显示的文字内容:
<button text="点击这里" />
你也可以定义多个按钮,每个按钮设置不同的文字:
<vertical>
  <button text="按钮一" />
  <button text="按钮二" />
</vertical>
💡 示例:带文字的按钮布局
以下是一个完整的示例,展示如何在垂直布局中定义多个带文字的按钮:
// 文档地址 https://docs.hamibot.com/
var window = floaty.window(
  <vertical padding="10">
    <button text="开始" />
    <button text="停止" />
    <button text="设置" />
  </vertical>
);
这段代码会创建一个悬浮窗,包含三个按钮,分别显示“开始”、“停止”和“设置”。
📌 注意事项
- text属性支持中文和英文字符,无需额外编码处理。
- 如果你需要在运行时动态修改按钮文字,可以通过 id获取按钮对象并调用setText()方法(见文档[4])。
- 不建议在 text中使用过长的内容,以免影响界面美观。
✅ 小结
在 XML 中设置 Button 按钮上的文字,只需使用 text 属性即可,语法简单明了。这是最直接、最常见的做法,适用于绝大多数按钮文字的初始设定场景。