您的位置:首页 > 移动开发 > Android开发

android软键盘的隐藏以及Edittext的焦点问题

2016-08-02 16:40 531 查看
android在背景切换的时候,我们经常会用到焦点方面的问题,当失去焦点的时候,我们的背景色是一个,有焦点的时候是另一个。

我们可以设置默认状态下的是没有焦点的状态,设置的方法如下所示:

在我们用到edittext的layout的最外层,写这两行代码:

android:focusable="true"
android:focusableInTouchMode="true"

就默认我们的Edittext的初始状态是失去焦点的。

而且我们还可以用代码来控制让Edittextt的控件失去焦点:

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

clear_code.clearFocus();

这样可以让我们的某个Edittext失去焦点。

rela_addc.setFocusable(true);
rela_addc.setFocusableInTouchMode(true);
rela_addc.requestFocus();

这三行代码一起用也可以让我们点击其他控件的时候失去edittext的焦点。具体如何理解本人也没有深入的了解,还望大神不吝赐教。

那么接下来就说一说我们的软键盘方面的相关东西吧:

InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(getCurrentFocus().getApplicationWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

在你需要的地方这两行代码可以让你将现有的软键盘进行强制隐藏。本人用的时候,是当点击一个按钮的时候触发监听,然后隐藏软键盘。就将上面的两行代码放到的onclick中,大家可以看情况使用。

还有一种隐藏软键盘的情况,是我们进入这个界面的时候,要让我们的软键盘进行默认状态是隐藏的效果。

1.  在 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>


2.让Edittext失去焦点:

如:

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


3.强制隐藏:

EditText edit=(EditText)findViewById(R.id.edit);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(),0);


而如果想让我们的activity进入的时候,这个activity中的edittext就默认选中,并且弹出软键盘的话,有一种方法是加一个延长一段时间后再显示,就可以显示我们的软键盘了。而另外一种会比较简单,就是在我们的AndroidMenifest中对应的activity中:

<activity
android:name=".my.TestAcitivity"
android:windowSoftInputMode="adjustResize" />

加入这行代码,就会让我们默认初始状态弹出软键盘并且显示。

4.点击Edittext以外部分,隐藏软键盘。

在Edittext的父控件,添加点击事件。然后加入以下代码即可。

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rela_talk:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
break;
}
}


关于Edittext 的处理一般针对焦点,默认状态,软键盘等展开,使用的时候可以相互印证,相互理解,会更有帮助。

当你失去焦点的时候,软键盘就不弹出了。当你获取焦点,颜色改变等等。还有设置默认的状态结合使用。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: