大家在进行Android项目开发的时候经常会遇到中文输入和英文输入切换的情况,本篇内容教给大家实现Android下自动识别中英文键盘的功能。

英文环境下,密码框字体和一般字体不一致问题

1、xml中不能设置inputType 属性、或者password属性

2、中文环境中设置inputType可以

3、当要是适配英文,只能在Java代码设置

android开发EditText输入时弹出数字输入键盘(适配英文环境)

首先设置只能输入数字

android:id="@+id/second_password"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:digits="1234567890"

android:maxLength="6"

android:paddingLeft="@dimen/dp_20"

android:singleLine="true"

android:textSize="@dimen/sp_14"/>

重点是

android:digits="1234567890"

EditText中android:digits属性的作用

是设置允许输入哪些字符。如“1234567890.+-*/%\n()”

再在代码里面设置输入法类型:

secondPassword.setInputType(EditorInfo.TYPE_CLASS_PHONE);//数字键盘

secondPassword.setTransformationMethod(new PasswordTransformationMethod());//密文

则如果该EditText获得焦点,会弹出数字输入法的模拟键盘

请在xml中设置inputType属性即可

1、API中有,列举出来inputType的值都包括哪些。

android:inputType=”none”

android:inputType=”text”

android:inputType=”textCapCharacters” 字母大写

android:inputType=”textCapWords” 首字母大写

android:inputType=”textCapSentences” 仅第一个字母大写

android:inputType=”textAutoCorrect” 自动完成

android:inputType=”textAutoComplete” 自动完成

android:inputType=”textMultiLine” 多行输入

android:inputType=”textImeMultiLine” 输入法多行(如果支持)

android:inputType=”textNoSuggestions” 不提示

android:inputType=”textUri” 网址

android:inputType=”textEmailAddress” 电子邮件地址

android:inputType=”textEmailSubject” 邮件主题

android:inputType=”textShortMessage” 短讯

android:inputType=”textLongMessage” 长信息

android:inputType=”textPersonName” 人名

android:inputType=”textPostalAddress” 地址

android:inputType=”textPassword” 密码

android:inputType=”textVisiblePassword” 可见密码

android:inputType=”textWebEditText” 作为网页表单的文本

android:inputType=”textFilter” 文本筛选过滤

android:inputType=”textPhonetic” 拼音输入

//数值类型

android:inputType=”number” 数字

android:inputType=”numberSigned” 带符号数字格式

android:inputType=”numberDecimal” 带小数点的浮点格式

android:inputType=”phone” 拨号键盘

android:inputType=”datetime” 时间日期

android:inputType=”date” 日期键盘

android:inputType=”time” 时间键盘

2、Enter键图标的设置

想象一下,当我们在EditText中完成了输入,想要以输入的内容作为关键字进行搜索时,却需要按下“完成”图标的Enter按键,显然这不符合良好的用户体验设计。 那么,怎么样来改变Enter按键的图标呢?

Android为我们提供了android:imeOptions来实现这一功能。

android:imeOptions的常用参数有以下一些:

normal(常规),

actionUnspecified(未指定),

actionNone(没有动作),

actionGo(去往),

actionSearch(搜索),

actionSend(发送),

actionNext(下一个),

actionDone(完成),

flagNoExtractUi,flagNoAccessoryAction,flagNoEnterAction等,其对应的Enter键

图标如图所示:

3、设置软键盘交互样式

有时键盘弹出需要把界面挤压到上端或直接覆盖界面。 可在AndroidManifest.xml 对应的 Activity 里添加上这条属性:

android:windowSoftInputMode=”参数”

参数详情如下,多个参数之间可用‘|'隔开:

【A】stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置

【B】stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示

【C】stateHidden:用户选择activity时,软键盘总是被隐藏

【D】stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的

【E】stateVisible:软键盘通常是可见的

【F】stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态

【G】adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示

【H】adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间

【I】adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分

EditText默认不弹出软件键盘:

方法一:

在 AndroidMainfest.xml 中选择哪个 activity,设置windowSoftInputMode 属性为 adjustUnspecified|stateHidden

例如:

android:label="@string/app_name"

android:windowSoftInputMode="adjustUnspecified|stateHidden"

android:configChanges="orientation|keyboardHidden">

方法二:

让EditText失去焦点,使用EditText的clearFocus方法

例如:

EditText edit=(EditText)findViewById(R.id.edit);

edit.clearFocus();

方法三:

强制隐藏Android输入法窗口

例如:

EditText edit=(EditText)findViewById(R.id.edit);

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(edit.getWindowToken(),0);

4、自动将输入的小写字母转换为大写

自动转化为大写字母。但是转换出来的只是显示为大写字母,存的还是小写字母。

class InputLowerToUpper extends ReplacementTransformationMethod{

@Override

protected char[] getOriginal() {

char[] lower = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' };

return lower;

}

@Override

protected char[] getReplacement() {

char[] upper = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' };

return upper;

}

}

editText.setTransformationMethod(new InputLowerToUpper());

也可通过设置 android:inputType=”textCapCharacters”可行,但是就不能一块使用密码键盘了。

//下面这种方法才是真正的将输入的小写字母转换为大写字母

addressText.addTextChangedListener(new TextWatcher() {

@Override

public void onTextChanged(CharSequence s, int start, int before, int count) {

// TODO Auto-generated method stub

addressText.removeTextChangedListener(this);//解除文字改变事件

addressText.setText(s.toString().toUpperCase());//转换

addressText.setSelection(s.toString().length());//重新设置光标位置

addressText.addTextChangedListener(this);//重新绑

// licensePlateNumber = addressText.getText().toString().trim();

}

@Override

public void beforeTextChanged(CharSequence s, int start, int count, int after) {

// TODO Auto-generated method stub

}

@Override

public void afterTextChanged(Editable arg0) {

// TODO Auto-generated method stub

}

});

android 代码设置 键盘适应_实现Android键盘的中英文适配相关推荐

  1. android 代码设置EditText的hint字符

    今天,简单讲讲android里如何在代码里设置  EditText的hint字符. 之前,我一般是直接在xml文件设置EditText 的hint字符,后来需要在代码里修改hint字符,发现自己居 ...

  2. android 铃声设置失败,无法通过Android代码设置铃声

    我正在开发一个应用程序,它将随机设置用户已选择的铃声列表中的铃声.无法通过Android代码设置铃声 虽然我的代码适用于Android N及以上版本,但我遇到了Android M及以下版本的问题.我为 ...

  3. android中用代码设置edittext属性为密码,Android中EditText常用属性设置

    EditText继承关系:View–>TextView–>EditText 常用属性如下:android:layout_gravity="center_vertical" ...

  4. android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序

    android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序   在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity, ...

  5. android 代码设置 键盘适应_硬核软件,能在电脑上控制iPhone和Android手机

    在电脑上控制手机大概已经不是什么新鲜操作,小米.华为都为自家手机和电脑的联动推出了同屏操作之类的功能,此外也可以通过开源软件Scrcpy来在Windows或者macOS上实现对安卓手机的控制,这些基本 ...

  6. android 代码设置 键盘适应_Android自适应软键盘的Dialog以及监听软键盘弹起

    最近项目中遇到一个需求:新手引导.跟一般的新手引导没有什么太大区别,思路都是搞一个带阴影的遮罩层,然后在上边儿给一些提示性的文字,由于需求中有些特殊的地方,所以我用了一个全屏的dialog(而且,di ...

  7. android 代码设置圆角,Android中用Shape实现圆角和局部圆角

    本文讲解如何实现布局边框的部分圆角 大家可能都知道圆角实现其实很简单, 在drawable文件夹下新建xml文件加入以下代码 情景1: 四个角均为圆角 android:shape="rect ...

  8. android代码设置drawor色值,Android 着色器 tint

    本文主要总结了 Android 着色器的使用及其原理,在实现同等效果的情况下,减少资源图的使用以减小 apk 包的体积并降低对内存的占用. 假设我们想实现一种效果,如下: 不怎么友好的做法是让设计师给 ...

  9. android 代码设置drawableLeft

    代码设置drawableLeft资源图片 private void setDrawalbes() {Drawable drawable = getResources().getDrawable(res ...

  10. android apn代码详解,android 代码设置apn

    代码设置apn,上代码: public class APNActivity extends Activity { public static final Uri APN_URI = Uri.parse ...

最新文章

  1. javascript自定义cookie
  2. python 遍历目录_Python遍历目录的4种方法实例介绍
  3. 删除或修改本地Git保存的账号密码
  4. java filefilter用法_JFileChooser.JFileFilter用法
  5. wemall微信商城云平台 快速创建您的微信商城
  6. matplotlib常用函数(更新中)
  7. 共用体变量不能在定义时初始化_【C语言资料更新】共用体联合体
  8. python - zipfile模块
  9. 高等数学(第七版)同济大学 习题7-3 个人解答
  10. 《originpro8》怎么拟合曲线
  11. 【Excel】数据透视表—按年、季度、月份汇总报表
  12. 在网址前加神秘字母,让你打开新世界
  13. Markdown | 最具有效率的写作工具一次性掌握
  14. 安卓开发实战讲解!首发10万字Android开发实战文档,完整版开放下载
  15. Lecture3 损失函数和优化损失函数
  16. 软件工程师的自白:真希望自己从没学过编码
  17. 数学建模速成!两小时零基础入门MATLAB教程(六)—— 定义和调用函数
  18. 信息管理导论 | 信息资源人文管理
  19. 项目管理实践篇(二):总结项目经历
  20. git中利用rebase来压缩多次提交

热门文章

  1. MATLAB命令行窗口常见命令与功能
  2. bigdecimal如何做除法_bigdecimal类型除法问题
  3. c语言 项目 轮子,程序员们为什么热衷于发明轮子?
  4. 【火炉炼AI】机器学习052-OpenCV构建人脸鼻子眼睛检测器
  5. Altium 怎么设置鼠标滚轮放大缩小
  6. 机器学习中最常使用的10种数据编码方式
  7. word批量调整图片大小--宏
  8. Ubuntu 重置密码
  9. **matlab中grid、grid on 和grid off用法**
  10. 小米路由器4A千兆版c341编程器刷breed.bin详细教程