第一个app-进阶:1、让EditText屏蔽软键盘仍能光标闪动:2、EditText 的inputType参数类型(密码方式-隐藏显示、只允许输入数字等等)

EditText屏蔽软键盘后,光标消失问题

开始我有个需求:屏蔽系统软键盘

于是找到并使用这个方法:

//edit_text1.setInputType(InputType.TYPE_NULL); //屏蔽软键盘弹出//edit_text2.setInputType(InputType.TYPE_NULL); //屏蔽软键盘弹出//edit_text3.setInputType(InputType.TYPE_NULL); //屏蔽软键盘弹出

让三个EditText都成功地没有软键盘弹出。

后来我要在EditText上设置显示光标:

android:textCursorDrawable="@null"android:cursorVisible="true"

但始终无光标闪动。。

---->然后在网上找到了这个方法---->

//屏蔽软键盘弹出--光标依然能闪动
        hideSoftInputMethod(edit_text1);
       hideSoftInputMethod(edit_text2);
       hideSoftInputMethod(edit_text3);

--真正的方法在这->

/** ==== 隐藏系统键盘 ======*/
    //用这个方法关闭系统键盘就不会出现光标消失的问题了
    public void hideSoftInputMethod(EditText ed){

        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

        String methodName = null;
        int currentVersion = android.os.Build.VERSION.SDK_INT;
        if(currentVersion >= 16){
            // 4.2
            methodName = "setShowSoftInputOnFocus";  //
        }else if(currentVersion >= 14){
            // 4.0
            methodName = "setSoftInputShownOnFocus";
        }

        if(methodName == null){
            //最低级最不济的方式,这个方式会把光标给屏蔽
            ed.setInputType(InputType.TYPE_NULL);
        }else{
            Class<EditText> cls = EditText.class;
            Method setShowSoftInputOnFocus;
            try {
                setShowSoftInputOnFocus = cls.getMethod(methodName, boolean.class);
                setShowSoftInputOnFocus.setAccessible(true);
                setShowSoftInputOnFocus.invoke(ed, false);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

EditText 的inputType参数类型

//edit_text2、edit_text3 输入框只允许输入数字 edit_text2.setInputType(InputType.TYPE_CLASS_NUMBER);edit_text3.setInputType(InputType.TYPE_CLASS_NUMBER);
 
Button bn = new Button(this);
bn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    EditText edit_text1 = (EditText) findViewById(R.id.edit_text1);
                    EditText edit_text2 = (EditText) findViewById(R.id.edit_text2);
                    EditText edit_text3 = (EditText) findViewById(R.id.edit_text3);
                    Button b = (Button) findViewById(v.getId());
                    //判断焦点(是否获得了焦点)          ==五星好评
                    //   检查键入的内容(是否合格)
                    //     将键入的内容追加给已获得焦点的EditText
                    //
                    if (edit_text1.isFocused()) {
                        try {
                            Long.parseLong(b.getText().toString(), 16);  //检查是否可转化为十六进制,即检查输入是否是十六进制数
                            edit_text1.append(b.getText());//内容追加
                            edit_text1.setError(null);//清除错误消息框
                        } catch (Exception e) {
                            edit_text1.setError("请输入0~~F之内的十六进制数.");
                        }
                    }else if (edit_text2.isFocused()) {
                        edit_text2.append(b.getText());
                        edit_text2.setError(null);
                    } else if (edit_text3.isFocused()) {
                        edit_text3.append(b.getText());
                        edit_text3.setError(null);
                    }
                }
            });

在xml中可以这样定义:

android: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"--URI格式
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"--时间键盘
时间: 2024-10-11 05:05:59

第一个app-进阶:1、让EditText屏蔽软键盘仍能光标闪动:2、EditText 的inputType参数类型(密码方式-隐藏显示、只允许输入数字等等)的相关文章

关于ListView中EditText在软键盘弹出后的焦点问题

转自:http://www.cnblogs.com/haofei/p/3305030.html 在ListView中,每次弹出软键盘后就会重新调用getView()方法,导致EditText失去焦点. 解决办法:在getView()方法中添加监听器: editText.setOnTouchListener(new OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEve

拿来就用——一句代码隐藏EditText的软键盘

有时在我们开发的页面中含有EditText导致页面一打开就会弹出软键盘,下面代码隐藏软键盘 EditText myEdit=(EditText)findViewById(R.id.edit); myEdit.clearFocus(); 原因:让EditText失去焦点.

Android Zygote进程是如何fork一个APP进程的

进程创建流程 不管从桌面启动应用还是应用内启动其它应用,如果这个应用所在进程不存在的话,都需要发起进程通过Binder机制告诉system server进程的AMS system server进程的AMS调用Process.start()方法,通过socket向zygote进程发送创建新进程的请求 在zygote进程的ZygoteInit.main方法中,有一个runSelectLoop循环体,通过acceptCommandPeer方法获取链接过来的客户端,再通过runOnce方法去创建进程 新

Android - 隐藏EditText弹出的软键盘输入(SoftInput)

隐藏EditText弹出的软键盘输入(SoftInput) 本文地址: http://blog.csdn.net/caroline_wendy 保持界面的整洁, 可以选择在进入界面时, 隐藏EditText控件的软键盘, 在点击EditView时, 再弹出; 可以在TextView所在的Activity中, 添加一个属性: android:windowSoftInputMode="stateHidden|adjustResize" 表明: 软键盘的输入模式是stateHidden(隐藏

ios 一个正则表达式测试(只可输入中文、字母和数字)

分类: iOS(390) 作者同类文章X 目录(?)[+] 一NSString自带的正则查找替换方法 二使用 RegexKitLite 三使用 RegexKitframework 框架 四常用ICU正则匹配模式 文本文件 Text Files 网络与URL相关 Network and URL 五贪婪匹配与最小匹配 六正则表达式书写格式 javascript正则表达式使用详解 在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到.之前在用java时特别是对用户名或

执行这些代码, Edit1只能输入数字,小数点和负号,负号和小数点只能输入一个,负号必须在最前,粘贴的数字必须完全正确.

执行这些代码, Edit1只能输入数字,小数点和负号,负号和小数点只能输入一个,负号必须在最前,粘贴的数字必须完全正确. type TForm1 = class(TForm) Edit1: TEdit; procedure FormCreate(Sender: TObject); private Edit1OldProc: TWndMethod; procedure Edit1NewProc(var Message: TMessage); public { Public declarations

EditText默认不弹出软键盘

#EditText默认不弹出软键盘# 网上关于EditText默认情况下不弹出软键盘,当手触摸到EditText,获取焦点时候,才会弹出软键盘,貌似都不能用,其实,在oncreate()方法中,加上 getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 就能达到预期效果,至于,让EditText永远不获取焦点的方法,网上大把的,百度即可,暂时没有遇见让EditText永远不获取焦点的场

Android开发,在Activity启动时,默认隐藏软键盘。和遮挡Edittext时的处理

在Activity启动时,默认隐藏软键盘: 在AndroidManifest.xml中找到你得Activity ,为它添加属性: android:windowSoftInputMode="stateAlwaysHidden" ------------------------ 输入遮挡Edittext时的处理: 在AndroidManifest.xml中找到你得Activity ,为它添加属性: android:windowSoftInputMode="adjustPan&qu

adb进阶知识,如何过滤只查看某一个app的日志

前面大概学习了adb基础,但是adb的存在,在测试人员中究竟有什么必要,以及看log时,那么多的log,让我们看个屁啊,所以这一次,我决定一定要把adb这件事情搞清楚. 1.先来看最感兴趣的adb日志 首先来了解一共概念,安卓的日志有那些: Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log.一般我们说的adb logcat看的都是android的日志 使用adb shell dmesg 可以能看Andr