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" />
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中:
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 的处理一般针对焦点,默认状态,软键盘等展开,使用的时候可以相互印证,相互理解,会更有帮助。
当你失去焦点的时候,软键盘就不弹出了。当你获取焦点,颜色改变等等。还有设置默认的状态结合使用。
完