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
属性即可,语法简单明了。这是最直接、最常见的做法,适用于绝大多数按钮文字的初始设定场景。