非ui模式xml模式 罗列出来所有floaty.window 下的button 等相关用户交互的表单组件,及配置属性
第 1 条补充
· 2 个月前
floaty.window() xml形式所有表单 滑动等用户交互组件
第 2 条补充
· 2 个月前
floaty.window xml模式 折叠组件 如何控制折叠 完整demo
回答
在非 UI 模式下,使用 floaty.window()
创建的悬浮窗支持多种用户交互组件。这些组件以 XML 布局形式定义,并通过 FloatyWindow 对象访问。以下是常见的表单组件及其配置属性。
支持的表单组件及配置属性
1. Button(按钮)
- text:设置按钮上的文本内容。
- textSize:设置文本字体大小(单位通常是 sp)。
- textColor:设置文本颜色(十六进制字符串,如
#FF0000
表示红色)。 - bg:设置按钮背景颜色或图片(如
#FFFFFF
或"res://drawable/image.png"
)。 - width / height:设置按钮宽度和高度。
- layout_weight:用于布局分配空间比例。
- gravity:设置内部元素的对齐方式。
- padding / margin:设置内边距和外边距。
- onClick:点击事件的回调函数。
<button
id="btn"
text="点击我"
textSize="20sp"
textColor="#000000"
bg="#CCCCCC"
width="*"
height="48dp" />
2. Text(文本框)
- text:设置显示的文本内容。
- textSize:设置字体大小。
- textColor:设置文本颜色。
- bg:设置背景颜色或图片。
- width / height:设置控件宽高。
- gravity:控制文本的位置(居中、左对齐等)。
- ellipsize:设置当文字过长时的截断处理(none, start, middle, end)。
- maxLines:设置最大显示行数。
<text
id="txt"
text="这是一个文本框"
textSize="16sp"
textColor="#333333"
bg="#EEEEEE"
width="*"
height="wrap_content"
gravity="center" />
3. EditText(输入框)
- hint:输入框为空时显示的提示文字。
- inputType:指定输入类型(text, number, phone 等)。
- text:设置默认文本。
- textSize:字体大小。
- textColor:文本颜色。
- bg:背景颜色或图片。
- width / height:设置控件宽高。
<edittext
id="etInput"
hint="请输入内容"
inputType="text"
textSize="16sp"
textColor="#000000"
bg="#FFFFFF"
width="*"
height="48dp" />
4. CheckBox(复选框)
- text:设置与复选框关联的文本。
- checked:是否默认选中(true/false)。
- textSize:设置文本大小。
- textColor:设置文本颜色。
- width / height:设置控件宽高。
- onCheckChange:状态变化时的回调函数。
<checkbox
id="chkBox"
text="同意协议"
checked="false"
textSize="16sp"
textColor="#333333"
width="*"
height="48dp" />
5. Switch(开关)
- text:设置与开关相关的文本。
- checked:是否默认开启(true/false)。
- textOn / textOff:设置开启和关闭时的文本。
- onCheckChange:状态改变时的回调函数。
<switch
id="swt"
text="启用功能"
checked="true"
textOn="开"
textOff="关"
width="*"
height="48dp" />
6. RadioGroup(单选组)
- orientation:设置子项排列方向(horizontal/vertical)。
- checkedId:预选中的 RadioButton 的 ID。
<radiogroup
id="radioGroup"
orientation="vertical">
<radiobutton id="rb1" text="选项A" />
<radiobutton id="rb2" text="选项B" />
</radiogroup>
7. RadioButton(单选按钮)
- text:设置显示的文本。
- checked:是否默认选中。
- textSize:设置文本大小。
- **text
补充回答 1
使用 floaty.window()
创建的悬浮窗支持多种用户交互组件,包括表单输入、滑动控件等。这些组件在 XML 布局中定义,并通过 FloatyWindow 对象访问其元素。
以下是所有常见用户交互组件及其配置属性(XML 形式):
1. 按钮类组件
<button>
- text:按钮显示文本
- textSize:字体大小(如
"20sp"
) - textColor:文本颜色(如
"#FF0000"
) - bg:背景颜色或图片资源(如
"#FFFFFF"
或"res://drawable/icon.png"
) - width / height:宽度和高度(支持
"*"
,"wrap_content"
或具体值如"100dp"
) - onClick:点击事件监听函数(JavaScript 回调)
<button id="btn" text="提交" width="*" height="48dp" bg="#3399ff" textColor="#ffffff"/>
2. 文本类组件
<text>
- text:显示的文本内容
- textSize:字体大小
- textColor:文本颜色
- bg:背景颜色
- gravity:文本对齐方式(如
"center"
) - ellipsize:文字过长时截断方式(
none
,start
,middle
,end
) - maxLines:最大行数
<text id="label" text="欢迎使用 Hamibot" textSize="16sp" textColor="#000000" gravity="center"/>
3. 输入类组件
<edittext>
- hint:提示文本
- inputType:输入类型(
text
,number
,phone
,password
等) - text:默认文本内容
- textSize:字体大小
- textColor:文本颜色
- bg:背景色或资源
- width / height:宽高设置
<edittext id="input" hint="请输入用户名" inputType="text" width="*" height="48dp" bg="#eeeeee"/>
4. 选择类组件
<checkbox>
- text:关联的文本
- checked:是否默认选中(
true
/false
) - onCheckChange:状态改变回调
<checkbox id="cbAgree" text="我同意协议" checked="false"/>
<switch>
- text:描述文本
- checked:是否默认开启
- textOn / textOff:开关状态对应的文本
- onCheckChange:切换事件回调
<switch id="swt" text="启用功能" checked="true" textOn="开" textOff="关"/>
<radiogroup>
+ <radiobutton>
- orientation:排列方向(
horizontal
/vertical
) - checkedId:默认选中的 RadioButton ID
- text:选项文本
- checked:是否默认选中
<radiogroup id="rg" orientation="vertical">
<radiobutton id="rb1" text="选项A"/>
<radiobutton id="rb2" text="选项B"/>
</radiogroup>
5. 滑动组件
<seekbar>
- max:最大值
- progress:初始进度值
- onProgressChanged:进度变化回调函数
<seekbar id="sb" max="100" progress="50" width="*"/>
<progressbar>
- max:最大值
- progress:当前进度值
- indeterminate:是否为不确定进度条(true/false)
<progressbar id="pb" max="100" progress="30" width="*" height="10dp"/>
6. 列表与滚动容器
<spinner>
- entries:下拉菜单项数组(字符串数组)
- onItemSelected:选择项变化回调
<spinner id="spn" entries="["选项1", "选项2", "选项3"]"/>
<listview>
- entries:列表项数组
- onItemClick:点击某一项时的回调函数
<listview id="lv" entries="['项目1', '项目2', '项目3']"/>
补充回答 2
在 Hamibot 中,使用 floaty.window
创建悬浮窗时,可以通过 XML 布局定义界面元素,包括折叠组件(如 ExpandableListView
或自定义的折叠布局)。你可以在 XML 中定义一个可折叠的结构,并通过 JavaScript 控制其展开和折叠状态。
下面是一个完整的示例,展示如何在 floaty.window
中使用 XML 定义一个简单的折叠组件,并通过按钮控制其展开和折叠:
// 文档地址 https://docs.hamibot.com/
var window = floaty.window(
<vertical padding="10">
<button id="toggleBtn" text="展开/折叠" />
<frame id="content" layout_weight="1" visibility="gone">
<text text="这是一个可以折叠的内容区域。" />
</frame>
</vertical>
);
window.setSize(300, -2); // 宽度为300,高度根据内容自动调整
window.setPosition(100, 100); // 设置初始位置
window.toggleBtn.click(function () {
var isVisible = window.content.getVisibility() == android.view.View.VISIBLE;
if (isVisible) {
window.content.setVisibility(android.view.View.GONE);
} else {
window.content.setVisibility(android.view.View.VISIBLE);
}
});
// 5秒后关闭悬浮窗
setTimeout(function () {
window.close();
}, 5000);
解释:
- XML 布局:使用
<vertical>
定义垂直排列的布局,包含一个按钮和一个frame
作为折叠内容区域。 - visibility 属性:
visibility="gone"
表示该组件默认是隐藏的。 - 按钮点击事件:通过
click
方法绑定按钮的点击事件,切换frame
的可见性。 - setVisibility 方法:用于控制组件的显示或隐藏,
View.VISIBLE
表示可见,View.GONE
表示不可见。
这个示例展示了如何实现基本的折叠功能,你可以根据需要扩展更复杂的折叠逻辑,比如嵌套多个层级、使用动画等。
ℹ️ 本回答由 AI 生成,内容仅供参考