1.android安卓editText自动弹出软键盘(输入键盘)
editext获取焦点并自动弹出输入键盘,代码如下:
EditText editText.setFocusable(true); editText.setFocusableInTouchMode(true); editText.requestFocus(); InputMethodManager inputManager (InputMethodManager)editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(editText, 0);
如果是已经入某个界面就要立刻弹出输入键盘,可能会由于界面未加载完成而无法弹出,需要适当延迟,比如延迟500毫秒:
Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { InputMethodManager inputManager =(InputMethodManager)editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(editText, 0); } },500);
2.Android 显示Dialog的同时自动弹出软键盘;
给你的Dialog自定义个样式就OK了
<!--带输入框-->
<style name="inputDialog" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowFrame">@android:color/transparent</item><!-- 边框 -->
<item name="android:windowIsFloating">true</item><!-- 是否浮现在activity之上 -->
<item name="android:windowIsTranslucent">false</item><!-- 半透明 -->
<item name="android:windowNoTitle">true</item><!-- 无标题 -->
<item name="android:windowBackground">@android:color/transparent</item><!-- 自己想要的背景 -->
<item name="android:backgroundDimEnabled">true</item><!-- 模糊 -->
<item name="android:windowSoftInputMode">stateAlwaysVisible</item><!--显示软件盘-->
</style>
其他细节 原文:https://blog.csdn.net/qq_35605213/article/details/80137292
3.EditText的初始化及设置监听
public void InitEditText() { searchEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { // "输入完点击确认执行该方法----软键盘的确定" String str=searchEditText.getText().toString(); if(TextUtils.isEmpty(str)) { showLongToast("搜索的关键字为空"); } else { goToSearchList(str); } return false; } }); searchEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { // TODO Auto-generated method stub if (hasFocus) { // Log.d(TAG, "############## 获取焦点---软键盘显示"); // mEditText.setFocusable(true); searchEditText.setFocusableInTouchMode(true);//这行决定了第一次软键盘弹出后,第二次是否可以继续弹出 // searchEditText.requestFocus(); // searchEditText.findFocus(); InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(searchEditText, InputMethodManager.SHOW_FORCED); } else { // Log.d(TAG, "############## 失去焦点---软键盘消失"); InputMethodManager imm = (InputMethodManager)getActivity(). getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getActivity().getWindow().getDecorView().getWindowToken(), 0); } } }); searchEditText.addTextChangedListener(new TextWatcher() { //监听EditText里Text的实时变化可以用来控制删除键的显示和隐藏及可以实现实时匹配搜索热词 @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { // "输入结束" String str=searchEditText.getText().toString(); if(TextUtils.isEmpty(str)) { setEmptyList(); } else { delectBtn.setVisibility(View.VISIBLE); } } }); }
XML如下:
<EditText android:id="@+id/et_radio_search_title" android:layout_width="702px" android:layout_height="48px" android:singleLine="true" android:ellipsize="start" android:gravity="left|center_vertical" android:textColor="@android:color/white" android:textSize="24px" android:imeOptions="flagNoExtractUi|actionSearch" android:background="@null" android:focusable="true" android:focusableInTouchMode="true"/>