【第22期】观点:IT 行业加班,到底有没有价值?

Android 控件之 Editext使用技巧

原创 2015年07月07日 14:18:59

隐藏软键盘

当我们点击Edittext时(获得焦点),都会弹出系统默认的软键盘,在有时候会需要做到点击EditText不想显示软键盘,这时候我们就要想方法把软键盘给你从隐藏掉,结合自己的经验参考了别人的答案,总结 有以下几种方式:

方法一:

(此方法会自动换行,但是会弹出软键盘)

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

例如:

<activity android:name=".Main"

android:label="@string/app_name"

android:windowSoftInputMode="adjustUnspecified|stateHidden"

android:configChanges="orientation|keyboardHidden">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

方法二:

(此方法在EditText中输入文本时会自动换行,但是会弹出软键盘)

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

例如:

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

方法三:

强制隐藏Android输入法窗口 (此方法在EditText中输入文本时会自动换行,但是会弹出软键盘)

例如:

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

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

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

方法四:

EditText始终不弹出软件键盘 ,但光标也会隐藏

例:

EditText edit=(EditText)findViewById(R.id.edit);
edit.setInputType(InputType.TYPE_NULL);

方法五:
(此方法能够隐藏,同时又保留光标的显示)

3.0以下版本可以用editText.setInputType(InputType.TYPE_NULL)来实现。或者设置editText.setKeyListener(null)来实现.
3.0以上版本除了调用隐藏方法:setShowSoftInputOnFocus(false),由于是系统内部方法。无法直接调用所以采用反射的方式来进行调用,如下

 Class<EditText> cls = EditText.class;try {
        Method setShowSoftInputOnFocus = cls.getMethod("setShowSoftInputOnFocus", boolean.class);
        setShowSoftInputOnFocus.setAccessible(false);
        setShowSoftInputOnFocus.invoke(eMobile, false);
        setShowSoftInputOnFocus.invoke(ePeople, false);
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch blocke.printStackTrace();
}catch (IllegalArgumentException e) {
// TODO Auto-generated catch blocke.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch blocke.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch blocke.printStackTrace();
}

上面反射的方法是从TextView的源码中找到的。因为EditText是继承它的,看网上据说有的sdk里面是”setSoftInputShownOnFocus”,反正具体是跟自己的sdk相对应就可以了

Editext光标的所在定位、插入、删除问题:

/**获取EditText光标所在的位置*/
private int getEditTextCursorIndex(EditText mEditText){
 return mEditText.getSelectionStart();
}
/**向EditText指定光标位置插入字符串*/

private void insertText(EditText mEditText, String mText){

 mEditText.getText().insert(getEditTextCursorIndex(mEditText), mText);

}
/**向EditText指定光标位置删除字符串*/

private void deleteText(EditText mEditText){
 if(!StringUtils.isEmpty(mEditText.getText().toString())){
mEditText.getText().delete(getEditTextCursorIndex(mEditText)-1, getEditTextCursorIndex(mEditText));
 }
}

未完,待续….

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Android中控件使用技巧之:TextView

1. 使用style+代码控制TextView的不同状态下的颜色(selected,pressed,normal)

Android自制发送短信程序

自制发送短信程序SmsManager与PendingIntent对象 <div style="border

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

2015最流行的Android组件、工具、框架大全

Android 是目前最流行的移动操作系统之一。 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件。本文试图将目前流行的组件收集起来以供...

Android开发技巧:在TextView控件中单击链接弹出Activity

发一些《Android开发权威指南》的章节给大家尝尝鲜 在5.2.1节和5.2.2节介绍了&lt;a&gt;标签以及TextView自动识别的特殊文本(网址、电话号、Email等),这些都可以通过单击来触发不同的动作。虽然这些单击动作已经可以满足大多数需要了,但如果读者想在单...

Android开发技巧:在TextView控件中单击链接弹出Activity

发一些《Android开发权威指南》的章节给大家尝尝鲜 在5.2.1节和5.2.2节介绍了&lt;a&gt;标签以及TextView自动识别的特殊文本(网址、电话号、Email等),这些都可以通过单击来触发不同的动作。虽然这些单击动作已经可以满足大多数需要了,但如果读者想在单...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)