android自动软键盘,Android自定义软键盘

MyKeyboard

Android自定义键盘的使用

实现步骤

第一步:

1、新建一个xml文件夹放在res目录下面,然后新建xml文件:money_keyboard.xml

2、然后在XML文件中添加按钮布局,这个布局就是键盘的样子了

android:horizontalGap="1dp"

android:keyWidth="33.33333%p"

android:keyHeight="10%p"

android:verticalGap="1dp">

android:codes="49"

android:keyLabel="1" />

android:codes="50"

android:keyLabel="2" />

android:codes="51"

android:keyEdgeFlags="right"

android:keyLabel="3" />

android:codes="52"

android:keyLabel="4" />

android:codes="53"

android:keyLabel="5" />

android:codes="54"

android:keyEdgeFlags="right"

android:keyLabel="6" />

android:codes="55"

android:keyLabel="7" />

android:codes="56"

android:keyLabel="8" />

android:codes="57"

android:keyEdgeFlags="right"

android:keyLabel="9" />

android:codes="46"

android:keyLabel="." />

android:codes="48"

android:keyLabel="0" />

android:codes="-5"

android:keyEdgeFlags="right"

android:keyIcon="@drawable/sym_keyboard_delete"

android:keyLabel="aa" />

3 属性介绍:

Keyboard:

存储键盘以及按键相关信息。

android:horizontalGap

按键之间默认的水平间距。

android:verticalGap

按键之间默认的垂直间距。

android:keyHeight

按键的默认高度,以像素或显示高度的百分比表示。

android:keyWidth:

按键的默认宽度,以像素或显示宽度的百分比表示。

Row:

为包含按键的容器。

Key:

用于描述键盘中单个键的位置和特性。

android:codes

该键输出的unicode值。

android:codes 官网介绍是说这个是该键的unicode 值或者逗号分隔值,当然我们也可以设置成我们想要的值,在源码中提供了几个特定的值

对照表:

836002402e87

image.png

public static final int KEYCODE_SHIFT = -1;

public static final int KEYCODE_MODE_CHANGE = -2;

public static final int KEYCODE_CANCEL = -3;

public static final int KEYCODE_DONE = -4;

public static final int KEYCODE_DELETE = -5;

public static final int KEYCODE_ALT = -6;

android:isRepeatable

这个属性如果设置为true,那么当长按该键时就会重复接受到该键上的动作,在 删除键键 和 空格键 上通常设为true。

android:keyLabel

显示在按键上的文字。

android:keyIcon与keyLabel

是二选一关系,它会代替文字以图标的形式显示在键上。

android:keyWidth="33.33333%p"

每一个按钮的宽度,可以设置百分比

android:keyHeight="10%p"

每一个按钮高度,可以设置百分比

第二步:布局文件引用KeyBoradView.

android:id="@+id/keyboard_view"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="20dp"

android:background="#d8d8d8"

android:focusable="true"

android:focusableInTouchMode="true"

android:keyBackground="@drawable/bg_keyboard_btn"

android:keyTextColor="#333333"

android:paddingTop="1dp"

android:shadowColor="#ffffff"

android:shadowRadius="0.0"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toBottomOf="@id/et_amount" />

KeyboardView是一个渲染虚拟键盘的View。 它处理键的渲染和检测按键和触摸动作。

显然我们需要KeyboardView来对Keyboard里的数据进行渲染并呈现给我们以及相关的点击事件做处理。 1)//设置keyboard与KeyboardView相关联的方法。

public void setKeyboard(Keyboard keyboard)

2)//设置虚拟键盘事件的监听,此方法必须设置,不然会报错。

public void setOnKeyboardActionListener(OnKeyboardActionListener listener) 步骤上呢,做完第一步的关联,并设置第二步的事件,调用KeyboardView.setVisible(true);键盘就可以显示出来了, 是不是很简单。不过到这里还没有结束哦,接下来我们为了使用上的便利要进行相应的封装。 封装 这里我们通过继承EditText来对Keyboard与KeyboardView进行封装。

attr.xml文件,这里我们需要通过一个xml类型的自定义属性引入我们的键盘描述文件。

三、实例化KeyBoradView给其设置KeyBorad,以及OnKeyboardActionListener事件监听。

1、新建一个类,我取名叫KeyUtils然后在里面新建三个属性。KeyBoard用处可大了,他才是本体,可以通过设置他来切换键盘。

2、构造函数,初始下三个参数。

3、先说下预览图吧,就是效果图上的预览图,需要预览图的话的将setPreviewEnabled设置为true,不过还得在布局文件中的android.inputmethodservice.KeyboardView标签对立面设置预览布局。否则,不会有字。至于设置的布局,一个TextView就好了~

onPress: 按下触发。

onRelease:松开触发。

onKey : 松开触发,在OnRelease之前触发。

swipeLeft : 左滑动,其他同理。哈哈~就这么懒。

onText :需要在 键盘xml,也就是我此时的number.xml里面中key标签对里添加一个

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

433M射频遥控灯、震动感应灯、WIFI避障小车

目录 433M射频遥控灯1. 433M射频灯的硬件连接2. 具体接线剖析3.课堂干货简述4. 准备工作之环境搭建KEIL_ISP_USBTOTTL驱动5. KEIL建立工程6.电子可编程开关继电器的原理7. 上电灯亮代码编写8. 烧写程序到单片机,实现灯一亮一灭9.遥控灯编程实现及效果验证震动感应灯1. 入门项目…

Bootstrap使用-1

目录 结构:1. 视图函数2. 模板3. 登陆4. 怎样发生的添加模板基础模板提供的block定制基础模板结构: $ tree -I "__pycache*|*.pyc|*.xlsx" -FCL 3 . |-- templates/ | -- h1.html -- test-boostracp.py 1. 视图函数 test-boostracp.py from …

测试 SyntaxHighlighter

#include <stdio.h>int main() {return 0; }转载于:https://www.cnblogs.com/gongnaixiao/p/3472817.html

段错误、内存溢出、内存泄漏(区别)、堆溢出、栈溢出

参考&#xff1a;内存泄漏、内存溢出、段错误、堆溢出、栈溢出 作者&#xff1a;焦木白 发布时间&#xff1a;2019-10-22 网址&#xff1a;https://blog.csdn.net/jiaomubai/article/details/102680705?spm1001.2014.3001.5501 目录段错误内存溢出内存泄漏栈溢出堆溢出段错误 …

12.2号

今日活动&#xff1a;继续改善软件时间&#xff1a;10.00-11.00地点&#xff1a;自习室 转载于:https://www.cnblogs.com/xinyue6/p/10072515.html

表单文本框提示字符点击时清空

表单文本框提示字符点击时清空&#xff08;input标签onfocus时文本框内提示信息清空&#xff09; 作用是&#xff0c;一个文本框&#xff0c;需要输入内容&#xff0c;在没有输入的时候里面有一段提示内容&#xff0c;当点击这个文本框输入的时候&#xff0c;文本框内的内容自…

C语言中指针的地址和内容

参考&#xff1a;C语言中指针的地址和内容 作者&#xff1a;wallying 发布时间&#xff1a;2018-10-18 09:47:54 网址&#xff1a;https://blog.csdn.net/qq_36631580/article/details/89375140?spm1001.2014.3001.5502 #include <stdio.h>//一般用"地址"表示…

android运行过程简书,android 启动过程(一)

1、由init.rc调用 app_main.cpp的main方法&#xff0c;启动zygote进程3、调用AndroidRuntime.cpp 的start方法传递ZygoteInit类路径5、AndroidRuntime.cpp的start方法主要启动java虚拟机跟注册虚拟机&#xff0c;调用ZygoteInit的main方法6、ZygoteInit的main方法主要 把zygote…

鼠标事件

<!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>mouse 事件</title><script type"text/javascript" src" ./js/jquery.min.js"></script><script type"t…

将会改变未来IT世界的十种编程语言

这里要说的都是革新&#xff0c;说这些的目的就是要保持关注最新技术。如果你是一个程序员&#xff0c;想要探寻未来技术&#xff0c;那这篇文章就是你的必读之选。我们这里列出了10种编程语言&#xff0c;10种将会改变IT世界工作方式的编程语言。这些语言已经在开始改变IT界的…

回调函数 —— 借助中间通用函数(形参里有函数指针,实现函数注册)调用不同的回调函数 (多态/分层)

回调函数传参&#xff1a;函数指针做函数参数&#xff08;回调函数&#xff09; 目录背景回调函数是实现函数分层且单向依赖的好办法&#xff0c;使用函数指针运行struct结构体回调函数代码更清晰简单理解回调函数Demo其他回调函数博文背景 这是我在实际工作中遇到的问题&…

linux下用户操作

在linux中添加ftp用&#xff0c;并设置相应的权限&#xff0c;操作步骤如下&#xff1a; 1、环境&#xff1a;ftp为vsftp。被限制用户名为test。被限制路径为/home/test。 2、建用户&#xff1a;在root用户下&#xff1a; useradd -d /home/test test //增加用户test&#…

Venkat 演讲翻译:你要清除代码中的异味

今天&#xff0c;Venkat Subramaniam 就关于清除代码异味的话题给我们做了一个非常有趣的演讲。下面就是我记录的一些他的话。 为什么我们需要有质量的代码&#xff1f; 敏捷开发方法是用来应付那些要求代码做大量改动的反馈信息的方法。如果程序没有用一种好的表达方式来表现&…

ESP8266等模块

模块讲解学习视频可参照&#xff1a;https://space.bilibili.com/323745961?spm_id_from333.788.b_765f7570696e666f.1 作者&#xff1a;叁议电子 目录ESP8266 WIFI模块介绍电脑操作ESP8266单片机上网ESP8266 WIFI模块介绍 电脑操作ESP8266 单片机上网

html5在线音乐列表播放器,HTML5列表音乐播放器SMusic

插件描述&#xff1a;一款基于HTML5、Css3的列表式音乐播放器&#xff0c;包含列表&#xff0c;音量&#xff0c;进度&#xff0c;时间&#xff0c;歌词展示以及模式等功能&#xff0c;不依赖任何库SMusic使用方法这是一款基于HTML5以及CSS3的列表式音乐播放器&#xff0c;增加…

unzipping/Users/xq/.gradle/wrapper /dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3-all.zi

unzipping/Users/xq/.gradle/wrapper /dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3-all.zip to /Users/xq/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9 可能是下载时网络原因造成文件缺失 解决方法&#xff1a; cd /Users/xq/.gradle/w…

WIFI小车APP

对应这篇文章&#xff1a;433M射频遥控灯、震动感应灯、WIFI避障小车 目录代码概要activity_contrl.xmlContrlActivity.javaNetUtils.java详细工程代码下载代码概要 activity_contrl.xml <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android&qu…

[Web App]必胜客宅急送产品设计思路介绍[转]

O2O模式是餐饮业在移动消费趋势下主动拥抱互联网的方向&#xff0c;迎合餐饮消费者从以往经验判断为主转变为依靠移动设备、LBS、社交网络进行立体决策的过程。App成为联系消费者和餐饮业的重要纽带&#xff0c;承载着在O2O双向流程的闭环中加深消费者对品牌的认同和感情认知的…

yara 模式匹配 android,YARA——恶意软件模式匹配利器

YARA是一款旨在帮助恶意软件研究人员识别和分类恶意软件样本的开源工具(由virustotal的软件工程师Victor M. Alvarezk开发)&#xff0c;使用YARA可以基于文本或二进制模式创建恶意软件家族描述信息&#xff0c;当然也可以是其他匹配信息。YARA的每一条描述或规则都由一系列字符…

12.6今日任务

查询资料&#xff0c;查询如何包装成软件转载于:https://www.cnblogs.com/IENHOLT/p/10147742.html