Creating Sencha Touch Toolbar Buttons

AI——修改UI的SKILL 本技能用于RYB_GCP_SETTLEMENT_V2医疗智能柜项目Android端UI美化,基于XML与Material设计规范,严格遵循“只改UI、不碰逻辑”原则。统一使用lib_ui中定义的设计令牌(如主色#467DE4、圆角12dp卡片区等),逐模块改造布局样式,确保字号(20–36sp)、资源引用及视图ID不变。每次仅改一两个模块,先输出方案待确认,再编译验证(需JDK 11)。已完第一批,第二批待确认,其余模块按相同规范推进。 阅读详情

Creating Sencha Touch Toolbar Buttons

In this tutorial you will learn how to create different types of toolbar buttons using the Sencha Touch Library. The sample application you will write consists of a panel and a couple of toolbars. You will dock the first toolbar to the top of the panel and the second toolbar to the bottom, as portrayed in the picture below.

These are the tasks you will complete to build the application:

  • Create a webpage to host the application
  • Write the Ext.setup function
  • Create different types of toolbar buttons
  • Create a tap handler for the buttons
  • Create and configure the toolbars
  • Create a panel and dock the toolbars

Setting up your Sencha Touch application

In order to get started you need to create an HTML page to host your application.  This page will reference the Sencha Touch library and your own scripts:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
     <link rel="stylesheet" href="ext/resources/css/ext-touch-debug.css" type="text/css"/>
     <script type="text/javascript" src="ext/ext-touch-debug-w-comments.js"> </script>
     <script type="text/javascript" src="js/toolbar-buttons-1.js"> </script>
</head>
<body>
</body>
</html>

Now, let’s focus on the toolbar-buttons-1.js file.  The first step should be configuring the application’s icons and start-up screens.  You can do this inside the Ext.setup() function:

Ext.setup({
    tabletStartupScreen: 'tablet_startup.png',
    phoneStartupScreen: 'phone_startup.png',
    icon: 'icon.png',
    glossOnIcon: false
});

Ext.setup() is a native function that takes care of configuring your page so it looks great on different mobile platforms and devices.  It also hosts the onReady() function, which is where you will configure the application’s objects.

Creating different types of Sencha Touch toolbar buttons

Inside onReady(), your first assignment is to add a couple of arrays of button configurations.  These arrays contain the buttons for the top and bottom toolbars:

var buttonsSpecTop = [
    { ui: 'back', text: 'Back' },
    { xtype: 'spacer' },
    { ui: 'forward', text: 'Forward' }
]

var buttonsSpecBottom = [
    { ui: 'normal', text: 'Normal' },
    { ui: 'round', text: 'Round' },
    { ui: 'action', text: 'Action' },
    { ui: 'confirm', text: 'Confirm' }
]

Pay attention to the ui configuration option.  This option determines the look of the button.  If you examine the ui values in the code and the buttons in the screenshot, you will notice how each ui value corresponds to a different look and feel.

To see the buttons at work you can create a simple routine that will handle tap events:

var tapHandler = function (btn, evt) {
    alert("Button '" + btn.text + "' tapped.");
}

The buttons and tap handler are now ready and it’s time to create the toolbars. You can use an array to store both toolbars:

var dockedItems = [{
    xtype: 'toolbar',
    title: 'Buttons',
    ui: 'dark',
    dock: 'top',
    items: buttonsSpecTop,
    defaults: { handler: tapHandler }
}, {
    xtype: 'toolbar',
    ui: 'dark',
    dock: 'bottom',
    items: buttonsSpecBottom,
    defaults: { handler: tapHandler }
}]

Notice how each toolbar has an array of button configurations assigned to the items option, and the buttons’ tap handler is attached through the defaults configuration option.

Putting it all together

Finally, you can go ahead and create the panel that will serve as the main container for the application:

new Ext.Panel({
    id: 'buttonsPanel',
    fullscreen: true,
    dockedItems: dockedItems
});

The docketItems configuration option is used to specify one or more components to be added as docked items to the panel.  These components, commonly tool bars and tab bars, can be docked to the top, right, bottom or left of the panel.

It is possible to manipulate docked items using a number of functions.  You can use the addDocked() and removeDocked() functions to add or remove docked items, and onDockedAdd() or onDockedRemove() to perform actions upon addition or removal of docked items.  The getDockedItems() method returns an array of the currently docked components.

Here’s the complete source code:

Ext.setup({
    tabletStartupScreen: 'tablet_startup.png',
    phoneStartupScreen: 'phone_startup.png',
    icon: 'icon.png',
    glossOnIcon: false,
    onReady: function () {

        var buttonsSpecTop = [
            { ui: 'back', text: 'Back' },
            { xtype: 'spacer' },
            { ui: 'forward', text: 'Forward' }
        ]

        var buttonsSpecBottom = [
            { ui: 'normal', text: 'Normal' },
            { ui: 'round', text: 'Round' },
            { ui: 'action', text: 'Action' },
            { ui: 'confirm', text: 'Confirm' }
        ]

        var tapHandler = function (btn, evt) {
            alert("Button '" + btn.text + "' tapped.");
        }

        var dockedItems = [{
            xtype: 'toolbar',
            title: 'Buttons',
            ui: 'dark',
            dock: 'top',
            items: buttonsSpecTop,
            defaults: { handler: tapHandler }
        }, {
            xtype: 'toolbar',
            ui: 'dark',
            dock: 'bottom',
            items: buttonsSpecBottom,
            defaults: { handler: tapHandler }
        }]

        new Ext.Panel({
            id: 'buttonsPanel',
            fullscreen: true,
            dockedItems: dockedItems
        });
    }
});

There it is. I hope this tutorial helps you with your Sencha Touch projects.

Be mindful that the information I provide here is based on Sencha Touch 0.97 Public Beta.  You should expect to see differences with the first release of the library.

基于 STM32F407 的环境监测与报警系统 本项目基于正点原子探索者F407开发板,集成光照、温度监测与报警功能,通过TFT-LCD以暗色科技风界面实时显示数据,并支持按键及串口设定阈值。利用HAL库驱动多个外设,实现多任务协同:光敏电阻与内部温度传感器采样结合滑动平均滤波,确保数据稳定;蜂鸣器与LED在超限情况下非阻塞报警;采用状态机管理设定模式,界面友好。代码结构清晰,适合初学者学习外设整合与综合应用开发。 阅读详情

相关推荐

EastWave应用案例:机箱屏蔽效能仿真

如何使用EastWave对机箱的电磁屏蔽效能进行仿真

2201_76034687的博客 1395

自动化脚本中如何创建自定义界面(UI)

冰狐的 UI 体系有一个容易被低估的设计取向:它没有在脚本运行时去拼装视图树,而是把界面描述固定在 XML 模板里,把事件逻辑交给 JS 处理。这种“模板在前、逻辑在后”的分工,让界面结构在编码阶段就是确定且可读的,调试时改一行 XML 就能立刻看到效果,不需要反复重启脚本去观察视图的拼装过程。

ai_coder_ai的博客 494

深度学习——VGG16模型详解

1、网络结构 VGG16模型很好的适用于分类和定位任务,其名称来自牛津大学几何组(Visual Geometry Group)的缩写。 根据卷积核的大小核卷积层数,VGG共有6种配置,分别为A、A-LRN、B、C、D、E,其中D和E两种是最为常用的VGG16和VGG19。 介绍结构图: conv3-64 :是指第三层卷积后维度变成64,同样地,conv3-128指的是第三层卷积后维度变成128; input(224x224 RGB image) :指的是输入图片大小为224244的彩色图像,通道为

橙子的博客 12万+

21st.dev 上手教程:12000+ React 组件库怎么用,6 步从挑样式到接进 Cursor

21st.dev 收录 12000+ 个 React + Tailwind 组件、297 套整站模板与 979 套主题。本文是手把手流程版:按页面用途找组件、用复制或 shadcn CLI 落地、接入 MCP 让 Cursor 自己取代码、用整站模板开局,附 10 张真实组件截图和 4 个常见坑。

懿轩的技术小窝 233

Cesium+Three.js融合实战:从零构建GIS与BIM一体化场景

本文详细介绍了如何将Cesium与Three.js进行技术融合,从零构建GIS与BIM一体化场景。通过环境配置、核心场景搭建、坐标转换、性能优化及交互处理等实战步骤,阐述了Cesium负责宏观地理空间渲染、Three.js处理微观精细BIM模型的协同方案,为智慧城市、数字孪生等应用提供关键技术实现路径。

weixin_29230865的博客 464

海思3403烧结、复用及mic输入

3403调试的第一步是版本烧结,版本烧结经常遇到问题,本文记录总结遇到的各种问题。

平面到立体 1357

兰亭妙微ui设计公司分享移动端UI设计:手机UI动效怎样从漂亮展示走向可讨论的原型

移动端UI动效设计需超越“视觉好看”,聚焦用户理解与交互逻辑。通过卡片展开、手势响应等动效,强化页面间内容连续性,保留关键视觉线索。设计应明确动效触发条件、结束状态及中途打断处理,结合静态图层与动态原型并行展示,提升评审效率。强调组件一致性、真实内容测试与清晰任务引导,让动效成为可推敲的协作工具,而非仅作演示素材。

lanlanwork12的博客 208

工业视觉降本300%实战:C# + 开源YOLO如何干掉Halcon/VisionPro?

在当前制造业普遍追求“降本增效”的大背景下,工业视觉检测系统作为产线的眼睛,其成本问题日益突出。通过该方案,我们成功帮助一家电子厂将单条产线的视觉检测成本从15万降低至不足5千(主要为工控机硬件成本),降本幅度超过95%,且系统稳定性经受住了6个月连续生产的考验。:C#负责“工程化”和“业务逻辑”,YOLO负责“智能算法”,二者结合,完美覆盖了工业视觉从算法到落地的全链路。的组合,构建一套高性能、低成本、易维护的工业视觉解决方案,并彻底替代昂贵的付费库。” 这是一个典型的误区。工业相机/USB相机。

2601_94871597的博客 431

BLG大战T1导致应用大规模启动

2026年11月9日,BLG对战T1赛事结束后4小时,因iOS灵动岛功能特性引发大规模应用后台启动。赛事期间用户开启灵动岛,赛后系统推送结束消息,但锁屏UI延迟4小时集中移除,触发大量客户端后台唤醒,导致登录态续期、设备指纹等服务告警。经排查,问题仅限iOS端,根源为灵动岛默认4小时后移除锁屏界面时自动唤醒应用。优化措施包括:临时扩容、推送打散(多通道串行+时间错峰)、客户端识别并保护后端请求,有效缓解压力。

weixin_42448366的博客 206

从 ABAP 后端到 AEX,Local Integration Engine 下的 Business System 配置全景

本文围绕SAP PI AEX配置中ABAP后端系统与AEX的连接问题,梳理了关键概念和技术脉络。重点指出基于ABAP 6.20及更高版本的业务系统内置了本地集成引擎(Local Integration Engine),负责与AEX的消息交互。配置要点包括:1)在SM59中创建HTTP类型RFC目标连接AEX;2)配置SAP_PROXY_ESR供设计时代理生成;3)通过SXMB_ADM设置业务系统角色为应用系统;4)确保SLD注册和SICF服务激活。文章特别强调运行时代理消息传递与设计时代理生成的区分,以及H

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 99

[STC32G144K246入门第六步]DAC驱动

本文摘要介绍了STC32G144微控制器内置的12位DAC模块特性与应用。该芯片集成双通道独立DAC,需通过内部运放缓冲后从P0.7/P5.0引脚输出,支持音频处理、波形生成等应用场景。重点阐述了DAC的R-2R梯形网络工作原理、关键性能指标(12位分辨率、转换速度等)及编程配置方法,包括频率设置、寄存器操作和运放引脚配置。文中还提供了32点正弦波表示例和初始化代码,强调参考电压稳定性对输出精度的重要影响。

sinat_58149788的博客 143

JS - 进阶

JavaScript的隐式类型转换遵循严格规范,核心为转原始值、数字、字符串和布尔值。对象通过Symbol.toPrimitive、toString或valueOf转换,加法运算中任一操作数为字符串则拼接,否则转数字相加;==会尝试类型转换,建议使用===。事件循环(EventLoop)中,同步代码执行后清空微任务队列(如Promise.then),再渲染界面并执行宏任务(如setTimeout)。微任务优先级高于宏任务,且可嵌套执行。async/await本质是微任务,用于简化异步编程。

D_xw_的博客 343

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

清绘AI 是什么?能力、模式、模型与适用边界

清绘AI是一站式 AI 创作平台,把生图、生视频、生音频、编辑修改、资产管理与剪辑整合在同一工作台,用于海报、电商物料、UI 概念稿、分镜脚本与短视频的批量产出。平台面向设计师、运营、产品、销售、自媒体与企业团队,网页端与手机端均可使用,提供无限画布与工作流两种创作模式。

Funkyyo的博客 96

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android 开发入门实践(十三):用 Intent、UiState 和 Reducer 理解 MVI 的状态更新

本文记录第141—145课对MVI架构的入门实践,通过“返回列表”功能逐步构建意图(NewsIntent)、状态(NewsUiState)与状态转换(reduce)机制。基于单向数据流,用户操作生成意图,ViewModel通过Reducer根据旧状态计算新状态,并通过StateFlow更新Compose界面。代码实现清晰分离关注点,强化了对状态管理、事件驱动与数据流的理解。

Easyhood的博客 342

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

添加xaml页面。WPF 多视图切换(UserControl 页面路由 / 视图切换模式)*

1、创建WPF App(.NET Framework / .NET) 解决方案 Test2、MainWindow 作为外壳主窗口2.1 MainWindow.xaml:定义Grid行列布局,划分【按钮菜单栏区域】+【ContentControl视图容器】2.2 MainWindow.xaml.cs:实现通用切换方法 SwitchView(UserControl view),给ContentControl赋值2.3 各个按钮点击事件里调用 SwitchView(视图实例)

zxf347085420的博客 96

Android Message源码阅读

本文梳理了Android Handler机制中Message的核心设计:链表结构、消息复用池(sPool)及回收机制,重点解析了异步消息与同步屏障(SyncBarrier)的协同机制。当主线程需优先处理UI绘制等高优先级任务时,系统通过postSyncBarrier插入屏障,使Looper跳过普通同步消息,优先执行标记为异步的UI渲染任务,确保帧率流畅。该机制是保障Android界面响应性的关键技术之一。

u012116089的博客 214

Flutter学习day13--Provider实战重构套路

写 Flutter 的头几周,setState几乎能解决所有问题:数据变了,调一下,界面就刷新了。这些问题有一个共同的名字——。Provider 就是 Flutter 官方推荐的基础状态管理方案,它不引入复杂的响应式系统,只是把「状态」从组件树里拎出来,放在一个所有组件都能访问的位置,并用的机制精确通知依赖它的组件。。

qq_63223749的博客 337

兰亭妙微ui设计公司分享QT界面开发:Qt设备界面的改动,怎样在预览里看清楚

本文分享一套针对设备参数界面微调的评审思路:以具体操作任务为起点,明确观察范围,保留修改前状态进行对比,关注单位、输入、提示等元素在正常与异常状态下的呈现。强调在不同屏幕尺寸下重走任务流程,记录可复查的证据,区分观察与结论,确保设计变更真正服务于用户任务。实时预览虽便捷,但需明确其边界,最终以可验证、可追溯的方式推动协作与验收。

lanlanwork12的博客 178

自动化脚本中自定义界面(ui)之输入框

冰狐的 UI 体系用 XML 描述结构,用 JavaScript 处理逻辑。在这个体系里,输入框的控件名是edit,但它的定位需要先厘清一个继承关系:edittext,所有适用于文本控件的属性和函数,在输入框上同样成立。这意味着textsizegravity这些文本控件属性在输入框上可以直接使用,setText()和getText()也并非输入框独有。真正把输入框和普通文本控件拉开距离的,是它“可编辑”这一层。普通text只负责展示,edit负责接收用户输入。hint用于在内容为空时显示提示文字,

jcgu的专栏 245

第3篇:用 modelSelected 处理点击事件——告别 delegate

本文通过RxCocoa的rx.modelSelected(_:),用一行代码实现UITableView点击事件的优雅处理:直接获取模型,自动取消高亮,无需手动deselectRow或通过indexPath.row取数据。结合throttle防连点、flatMapFirst避免重复请求,彻底告别UITableViewDelegate,提升代码简洁性与可维护性。下一篇将引入ViewModel,进一步解耦视图逻辑。

我叫柱子哥 207

用 AI 在 Unity 里做一款 RTS:最难的不是生成代码,而是证明它真的能玩

git@github.com:zoucdr/unity-skilled-mcp.git

邹杭特的博客 281

KMP学习day9--Ktor网络层与安全请求

做一个 KMP(Kotlin Multiplatform)项目时,最先撞上的问题是:网络请求怎么写?Flutter 有 http/Dio,iOS 有 URLSession,Android 有 OkHttp——但如果业务逻辑放在共享层(commonMain),就不能直接依赖任何一端的网络库。Ktor 正是为此而生的:它是 JetBrains 官方的 Kotlin 异步框架,其 Client 模块提供了一套。

qq_63223749的博客 199

Avalonia 设备监测实战设计|高频采样怎么接到实时曲线、热力图和 3D 视图?

设备每秒推来的采样批次和页面刷新的节奏通常不同。把每条采样直接推给 UI,会让绘制次数跟着输入速率增长。用做 Avalonia 监测页面时,可以把采集、显示窗口和视图更新拆开,再用测点 ID 把三个视图串起来。

2501_91602431的博客 68

智能体(GUI Agent / Computer-Use Agent / Action-Oriented AI)

2025–2026年,AI从“对话生成”迈向“动手执行”,指向智能体(GUI Agent)成为核心跃迁。其通过多模态理解、视觉定位与系统级操作,实现像人一样看屏、决策、点击、执行。底层依赖VLM+任务规划、坐标定位、记忆管理与环境感知。直接受益产业包括:软件工程(自动化开发)、企服SaaS(数字劳动力替代)、RPA升维、AI PC/手机端侧硬件、操作系统入口价值重估,以及推理算力与操作数据标注。未来将重塑生产力,推动“人+智能体集群”协同工作模式,实现社会全要素生产率跃升。

u013584020的博客 305

把 FSearch 搬上鸿蒙 PC:C 查询内核移植 + ArkTS 原生重写“秒搜“即时文件搜索全记录

这次移植的答案是"重写 + 真移植"的混合:架构层把上游的设计搬过来——core/UI 分层变成 Worker/Native 分层,GObject 信号变成回调字段,GTK headerbar 变成 ArkUI headerbar,GIO 的文件操作变成零权限的 picker 授权模型;内核层则把上游查询算法(lexer → shunting-yard → 表达式树 → matcher)用纯 C 重建并与交叉编译的 PCRE2 静态链接——正则匹配跑的就是与上游同一款引擎,连 JIT 容错语义都一脉相承。

todoitbo的博客 1万+
上一篇: dhtmlx touch
下一篇: Sass compass
OmelasShell
博客等级 码龄15年 5粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值