• AWTK实现自定义软键盘的方法


    有时需要把软键盘嵌入到窗口内部(比如计算器和密码输入等),这时可以使用自定义软键盘。

    一、编辑器设置input_type为"custom"(它会禁止内置的软键盘)。

    <edit x="c" y="10" w="90%" h="30" focus="true" input_type="custom" text="" />
    

    如果希望初始化时编辑器自动获的焦点,可以设置focus为true。

    二、软键盘的按钮放入一个view(任何容器控件均可)中,并将view的is_keyboard设置为true。

      <view y="60" x="c" w="90%" h="-60" is_keyboard="true" 
        children_layout="default(r=4,c=4,m=5,s=5)" >
        <button name="key" text="0" />
        <button name="key" text="1" />
        <button name="key" text="2" />
        <button name="key" text="3" />
        <button name="key" text="4" />
        <button name="key" text="5" />
        <button name="key" text="6" />
        <button name="key" text="7" />
        <button name="key" text="8" />
        <button name="key" text="9" />
        <button name="key" text="#" />
        <button name="backspace" text="<=" />
      </view>
    

    三、处理按钮事件

    1.处理正常按键

    static ret_t on_send_key(void* ctx, event_t* e) {
      widget_t* button = WIDGET(e->target);
      char text[2];
      text[0] = (char)button->text.str[0];
      text[1] = '';
    
      input_method_commit_text(input_method(), text);
    
      return RET_OK;
    }
    
    

    2.处理删除键

    static ret_t on_backspace(void* ctx, event_t* e) {
      input_method_dispatch_key(input_method(), TK_KEY_BACKSPACE);
    
      return RET_OK;
    }
    

    如果你不希望出现编辑器的光标,可以使用label控件代替edit控件,输入和删除时直接操作label的text。

    参考:

  • 相关阅读:
    编写一个程序的步骤
    vue实现瀑布流
    Vue 解决动态生成列表点击事件无效的问题
    筛选分类列表展示
    php实现类似慕课网,php中文网的分类功能
    在一个页面修改数据,并且ajax刷新数据列表的数据实现。
    记账小程序系统简单规划
    茶叶项目---产品的规格添加
    茶叶商城开发
    后端图片上传
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13332996.html
Copyright © 2020-2023  润新知