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

1、xml中不能设置inputType 属性、或者password属性
2、中文环境中设置inputType可以
3、当要是适配英文,只能在Java代码设置

密码框 字体不一致

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

首先设置只能输入数字

            

重点是

  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
例如:

                                        

方法二:
让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          }     });

更多相关文章

  1. android中自定义ViewGroup的实现
  2. android 模拟器 自定义分辨率 没有键盘
  3. 记录-解决设置透明状态栏,软键盘弹起问题
  4. Android中自定义ListView无法响应OnItemClickListener中的onItem
  5. android:weight属性的使用——android开发之xml布局文件
  6. Android(安卓)Material Design 系列之 TextInputLayout 使用详解
  7. Android-横屏应用在竖屏情况下解锁引起销毁
  8. (转)android中的ellipsize
  9. 对于android中自定义组件属性的理解

随机推荐

  1. Android 4.4 KitKat, the browser and th
  2. Android初始化语言(Android(安卓)Init Lan
  3. android打电话发短信
  4. Android 闹钟管理类的使用
  5. Android 命令行编译、打包生成apk文件
  6. 第一章 andriod studio 安装与环境搭建
  7. Android 中文API(86)——ResourceCursorAda
  8. android用户界面-组件Widget-地图视图Map
  9. Android开发——Android搜索框架(二)
  10. Android下Excel的操作