Android 开发 之 键盘弹出

弹出软键盘方法


1. 在activity注册的时候设置
<activity android:name="com.zwg.xjkb.RegisterActivity"
            android:windowSoftInputMode="stateAlwaysVisible">
</activity>


2. 用代码进行调用 和隐藏


首先要找到在那个组件上弹出软键盘
其次这个延迟效果是在刚进入一个页面时就要弹出软键盘时,可能无法探出此时就要进行延迟处理。相反不用延迟处理
tv_inname = (EditText) view.findViewById(R.id.tv_inname);
tv_inname.requestFocus();




UIUtils.getHandler().postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager manager=(InputMethodManager) tv_inname.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
manager.showSoftInput(tv_inname, 0);

}
}, 100);




//这种显示不需要延迟处理。但是在部分手机上还是要做延迟处理才能显示出来,所以最终方案还是要做延迟处理;
manager.showSoftInput(qSearchView.et_searchcontent, InputMethodManager.SHOW_FORCED);




//隐藏
manager.hideSoftInputFromWindow(view.getWindowToken(), 0);//隐藏输入键盘。


3. 弹出键盘是屏幕分两种,上移或者键盘覆盖在屏幕上(默认是上移)


getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);//覆盖
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);//上移


<activity android:name="com.zwg.xjkb.RegisterActivity"
            android:windowSoftInputMode="adjustPan">//覆盖
</activity>


<activity android:name="com.zwg.xjkb.RegisterActivity"
            android:windowSoftInputMode="adjustResize">//屏幕上移
</activity>
4. 禁止弹出键盘


et.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
hideSoftInputMethod(et);
return false;
}
});


/**
* 禁掉系统软键盘
*/
public void hideSoftInputMethod(EditText mEdit) {
mActivity.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
int currentVersion = android.os.Build.VERSION.SDK_INT;
String methodName = null;
if (currentVersion >= 16) {
// 4.2
methodName = "setShowSoftInputOnFocus";
} else if (currentVersion >= 14) {
// 4.0
methodName = "setSoftInputShownOnFocus";
}
if (methodName == null) {
mEdit.setInputType(InputType.TYPE_NULL);
} else {
Class<EditText> cls = EditText.class;
Method setShowSoftInputOnFocus;
try {
setShowSoftInputOnFocus = cls.getMethod(methodName,
boolean.class);
setShowSoftInputOnFocus.setAccessible(true);
setShowSoftInputOnFocus.invoke(mEdit, false);
} catch (NoSuchMethodException e) {
mEdit.setInputType(InputType.TYPE_NULL);
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
5. 在AndroidManifest文件中配置不让弹,但是点击是会弹


<activity  
           android:name="smalt.manger.sms.SmsShowDetailItemsActivity"  
           android:windowSoftInputMode="stateHidden|stateAlwaysHidden" >  
       </activity>  
6. 还有直接设置在editText中没有焦健,点击是在给过去焦焦点




//开始显示是没有光标的,不能聚焦,没有焦点的
android:focusable="false"  
            android:focusableInTouchMode="false"  

//点击是可以聚焦,可以触摸聚焦,申请聚焦
et_search.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               tv_search.setFocusable(true);//设置输入框可聚集
               tv_search.setFocusableInTouchMode(true);//设置触摸聚焦
               tv_search.requestFocus();//请求焦点
              // tv_search.findFocus();//获取焦点
           }
       });


//操作完成后设置不能聚焦,当点击的时候又可以操作。
tv_search.setFocusable(false);//设置输入框可聚集

猜你喜欢

转载自blog.csdn.net/z_x_Qiang/article/details/79937592