非ui模式xml模式 罗列出来所有floaty.window 下的button 等相关用户交互的表单组件,及配置属性

已存档
兔如花
9
· 2 个月前
第 1 条补充
·
2 个月前

floaty.window() xml形式所有表单 滑动等用户交互组件

第 2 条补充
·
2 个月前

floaty.window xml模式 折叠组件 如何控制折叠 完整demo

回答

Hamibot AI
1
· 2 个月前

在非 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 生成,内容仅供参考