热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

安卓实战:自定义软键盘(2),kotlinlambda匿名内部类

//键盘与键盘间垂直方向分割 //数字键1 //数字键2 //数字键3 //删除键 //数字键4 //数字键5 //数字键6 //确定键,设置较大 //数字键7 //数字键8 //数

android:keyHeight=“50dp”

android:keyWidth=“25%p” //一行四个按键

android:horizontalGap=“1px” //键盘与键盘间水平方向分割

android:verticalGap=“1px”> //键盘与键盘间垂直方向分割

//数字键1


android:codes=“50” android:keyLabel=“2”/> //数字键2

//数字键3

//删除键

//数字键4

//数字键5

//数字键6

//确定键,设置较大

//数字键7

//数字键8

//数字键9

//清零键

//0键

//.键

然后是逻辑编写:

KeyboardUtils.java

package com.example.mytally.utils;

import android.inputmethodservice.Keyboard;

import android.inputmethodservice.KeyboardView;

import android.text.Editable;

import android.text.InputType;

import android.view.View;

import android.widget.EditText;

import com.example.mytally.R;

public class KeyBoardUtils {

private final Keyboard k1; //自定义键盘

private KeyboardView keyboardView;

private EditText editText; //设置一个变量EditText使得输入处随软键盘输入变化

//生成两者的构造方法

public interface OnEnsureListener{

public void onEnsure();

}

OnEnsureListener onEnsureListener;

public void setOnEnsureListener(OnEnsureListener onEnsureListener) {

this.onEnsureListener = onEnsureListener;

}

public KeyBoardUtils(KeyboardView keyboardView, EditText editText) {

this.keyboardView = keyboardView;

this.editText = editText;

this.editText.setInputType(InputType.TYPE_NULL); //取消弹出系统键盘

k1 = new Keyboard(this.editText.getContext(), R.xml.key); //获取自定义键盘的对象

this.keyboardView.setKeyboard(k1); //设置要显示键盘的样式

this.keyboardView.setEnabled(true);

this.keyboardView.setPreviewEnabled(false); //能进行预览

this.keyboardView.setOnKeyboardActionListener(listener); //设置键盘按钮被点击了的监听

}

KeyboardView.OnKeyboardActionListener listener = new KeyboardView.OnKeyboardActionListener() {

@Override

public void onPress(int primaryCode) {

}

@Override

public void onRelease(int primaryCode) {

}

@Override

public void onKey(int primaryCode, int[] keyCodes) {

Editable editable = editText.getText();

int start = editText.getSelectionStart();

switch (primaryCode) {

case Keyboard.KEYCODE_DELETE: //点击了删除键

if (editable!=null &&editable.length()>0) {

if (start>0) {

editable.delete(start-1,start);

}
lectionStart();

switch (primaryCode) {

case Keyboard.KEYCODE_DELETE: //点击了删除键

if (editable!=null &&editable.length()>0) {

if (start>0) {

editable.delete(start-1,start);

}


推荐阅读
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
author-avatar
Vin-莹持_366
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有