xml形式 radio,seekbar 修改大小及颜色 完整demo
第 1 条补充
· 1 个月前
在floaty.window模式下实现
第 2 条补充
· 1 个月前
radio 按钮大小,seekbar滑块大小
回答
<?xml version="1.0" encoding="utf-8"?>
<vertical xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<!-- RadioGroup 示例 -->
<radiogroup
android:id="@+id/radioGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<radio
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选项1"
android:textColor="#FF0000"
android:textSize="18sp" />
<radio
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选项2"
android:textColor="#00FF00"
android:textSize="18sp" />
</radiogroup>
<!-- SeekBar 示例 -->
<seekbar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="50"
android:progressTint="#0000FF"
android:thumbTint="#FF0000"
android:layout_marginTop="24dp" />
</vertical>
代码说明:
-
RadioGroup
- 使用
android:textColor
设置文本颜色(#FF0000=红色,#00FF00=绿色) - 使用
android:textSize
设置文本大小(18sp) - 控件大小由
wrap_content
自适应内容 android:orientation="vertical"
实现垂直排列
- 使用
-
SeekBar
android:max="100"
设置最大值android:progress="50"
设置初始进度android:progressTint="#0000FF"
设置进度条颜色(蓝色)android:thumbTint="#FF0000"
设置滑块颜色(红色)match_parent
让进度条占满父容器宽度
附加配置:
若需使用自定义样式,可在 res/values/styles.xml
中定义主题样式,或通过 ui.useAndroidResources()
启用原生资源管理(需配置 project.json)。
补充回答 1
// 文档地址 https://docs.hamibot.com/
// 创建悬浮窗
var window = floaty.window(
<vertical padding="16">
{/* RadioGroup 示例 */}
<radiogroup id="rg">
<radio
text="选项1"
textColor="#FF0000"
textSize="18sp"
margin="8"
/>
<radio
text="选项2"
textColor="#00FF00"
textSize="18sp"
margin="8"
/>
</radiogroup>
{/* SeekBar 示例 */}
<seekbar
id="sb"
max="100"
progress="50"
progressTint="#0000FF"
thumbTint="#FF0000"
margin="24 0"
/>
</vertical>
);
// 设置悬浮窗属性
window.setSize(-2, -2); // 自适应内容大小
window.setPosition(100, 200); // 初始位置
window.setTouchable(true); // 允许触摸交互
// 添加关闭逻辑(点击空白处关闭)
window.get().setOnClickListener(function() {
window.close();
});
// 动态更新示例
setInterval(function() {
var progress = window.sb.getProgress();
log("当前进度: " + progress + "%");
}, 3000);
核心功能说明:
-
悬浮窗构建
- 使用
floaty.window()
创建带布局的悬浮窗 - 通过
setSize(-2, -2)
实现自适应内容大小 setPosition()
设置初始坐标(单位:像素)
- 使用
-
控件样式控制
- RadioGroup:通过
textColor
、textSize
控制文本样式 - SeekBar:
progressTint
设置进度条颜色,thumbTint
设置滑块颜色
- RadioGroup:通过
-
交互扩展
setTouchable(true)
启用触摸交互- 添加点击监听器实现关闭功能
- 可通过
getProgress()
获取实时进度值
调整建议:
- 悬浮窗大小:将
setSize(-2, -2)
改为setSize(300, -2)
固定宽度 - 布局优化:使用
margin="16"
设置外边距提升可视效果 - 样式扩展:可添加
bg="#透明度+RGB"
实现背景色(如bg="#88FFFFFF"
半透明白)
注意:运行前需开启悬浮窗权限。代码中所有尺寸单位均为像素,颜色值支持十六进制、HTML颜色名称等多种格式。
补充回答 2
// 文档地址 https://docs.hamibot.com/
// 创建悬浮窗
var window = floaty.window(
<vertical padding="16">
{/* RadioGroup 容器 */}
<horizontal>
<radiogroup id="rg">
<radio
id="radio1"
text="选项1"
textColor="#FF0000"
textSize="18sp"
width="50"
height="50"
scale="1.5"
margin="8"
/>
<radio
id="radio2"
text="选项2"
textColor="#00FF00"
textSize="18sp"
width="50"
height="50"
scale="1.5"
margin="8"
/>
</radiogroup>
</horizontal>
{/* SeekBar 容器 */}
<horizontal margin="0 16">
<seekbar
id="sb"
max="100"
progress="50"
progressTint="#0000FF"
thumbTint="#FF0000"
height="40"
scale="1.2"
/>
</horizontal>
</vertical>
);
// 设置悬浮窗属性
window.setSize(-2, -2);
window.setPosition(100, 200);
window.setTouchable(true);
// 获取控件视图对象
var radio1 = window.radio1.get();
var radio2 = window.radio2.get();
var seekBar = window.sb.get();
// 动态调整Radio按钮大小
radio1.setScaleX(1.5);
radio1.setScaleY(1.5);
radio2.setScaleX(1.5);
radio2.setScaleY(1.5);
// 调整SeekBar滑块大小
seekBar.getThumb().setBounds(
0, 0,
40, 40 // 设置滑块的宽高(单位:像素)
);
// 日志监控
setInterval(function() {
log("Radio1 尺寸: " + radio1.getWidth() + "x" + radio1.getHeight());
log("SeekBar 滑块位置: " + seekBar.getProgress() + "%");
}, 3000);
关键实现点说明:
-
Radio 按钮大小控制
width
/height
:直接设置控件尺寸(单位:像素)scale
:在XML中声明性缩放(1.5倍)setScaleX/Y()
:运行时动态控制缩放比例
-
SeekBar 滑块调整
height
:控制进度条整体高度(40px)scale
:整体缩放(1.2倍)getThumb().setBounds()
:精确设置滑块尺寸(40x40px)
-
布局优化
- 外层
<horizontal>
容器防止内容溢出 margin
控制元素间距setSize(-2,-2)
自适应内容大小
- 外层
调整建议:
- 精准控制:使用
setBounds()
时需确保已获得实际视图对象(通过.get()
) - 性能优化:避免在循环中频繁调用
.get()
方法 - 跨设备适配:可使用
device.widthPixels
动态计算尺寸
注意:悬浮窗控件尺寸默认单位为像素,若需使用dp单位需手动转换(例如:
var dp = device.density; var sizeInDp = 40 * dp
)。
ℹ️ 本回答由 AI 生成,内容仅供参考