點選空白出隱藏鍵盤,或者點選按鈕隱藏軟鍵盤
很多時候,我們在使用應用時,會出現輸入法軟鍵盤彈出的問題,通常情況下,我們預設會使使用者點選返回鍵或者下一步對軟鍵盤進行隱藏。為了更好的體驗,我們可以實現當使用者使用完畢軟鍵盤時。點選空白區域即可實現隱藏的功能。效果如圖所示:
不多說了看程式碼吧:
import android.content.Context;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
/**
* Created by J!nl!n on 15/5/21.
*/
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
iniView();
}
public abstract void iniView();
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if (isShouldHideKeyboard(v, ev)) {
hideKeyboard(v.getWindowToken());
}
}
return super.dispatchTouchEvent(ev);
}
/**
* 根據EditText所在座標和使用者點選的座標相對比,來判斷是否隱藏鍵盤,因為當使用者點選EditText時則不能隱藏
*
* @param v
* @param event
* @return
*/
private boolean isShouldHideKeyboard(View v, MotionEvent event) {
if (v != null && (v instanceof EditText)) {
int[] l = {0, 0};
v.getLocationInWindow(l);
int left = l[0],
top = l[1],
bottom = top + v.getHeight(),
right = left + v.getWidth();
if (event.getX() > left && event.getX() < right
&& event.getY() > top && event.getY() < bottom) {
// 點選EditText的事件,忽略它。
return false;
} else {
return true;
}
}
// 如果焦點不是EditText則忽略,這個發生在檢視剛繪製完,第一個焦點不在EditText上,和使用者用軌跡球選擇其他的焦點
return false;
}
/**
* 獲取InputMethodManager,隱藏軟鍵盤
* @param token
*/
private void hideKeyboard(IBinder token) {
if (token != null) {
InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
當然我們還有更加簡單的方法來實現該功能,只需要重寫onTouchEvent方法即可。程式碼如下:
public boolean onTouchEvent(MotionEvent event) {
if(null != this.getCurrentFocus()){
/**
* 點選空白位置 隱藏軟鍵盤
*/
InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
return mInputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), 0);
}
return super .onTouchEvent(event);
}
使用一個BaseActivity進行一些處理公共操作,其他Activity均繼承自該基類Activity即可,則所有介面均可實現點選空白區域,隱藏軟鍵盤。
還有另外一種請款不過情況,在專案中,editText獲取焦點後,會自動彈出軟鍵盤,關閉的時候一般需要按返回鍵或者點選軟鍵盤上的按鈕,
即使當前activity已經finish掉,軟鍵盤依然存在,會影響使用者的體驗。
網上目前有很多很詳細的辦法,比如點選其他空白區域,軟鍵盤就會消失之類的方法,我們專案中沒有要求這個,要求的是隻要
不遮擋其他操作,還有當前Activity關閉掉後軟鍵盤消失就行,
今天給大家分享兩個辦法:
//此方法,如果顯示則隱藏,如果隱藏則顯示
private void hintKbOne() {
InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
// 得到InputMethodManager的例項
if (imm.isActive()) {
// 如果開啟
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
//此方法只是關閉軟鍵盤
private void hintKbTwo() {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm.isActive()&&getCurrentFocus()!=null){
if (getCurrentFocus().getWindowToken()!=null) {
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
相關文章
- Flutter實現點選空白區域隱藏軟鍵盤Flutter
- 聊聊Flutter中的點選空白處隱藏鍵盤Flutter
- 點選按鈕顯示或者隱藏元素例項程式碼
- jquery點選按鈕顯示和隱藏DIvjQuery
- vue點選空白區域,下拉選單隱藏Vue
- 點選按鈕動畫方式隱藏和顯示div動畫
- 直播網站原始碼,點選EditText以外的區域,鍵盤隱藏消失網站原始碼
- 點選空白處隱藏相應的元素
- 手勢隱藏軟鍵盤&設定UISearchBarUI
- 點選同一按鈕顯示隱藏切換
- 點選按鈕實現div的顯示和隱藏
- JavaScript點選一個按鈕隱藏和顯示divJavaScript
- asp.net點選鍵盤enter鍵,呼叫按鈕點選事件函式ASP.NET事件函式
- Android 隱藏手機鍵盤Android
- JavaScript 點選一個按鈕 div的隱藏和顯示JavaScript
- 實現android按下Enter鍵便隱藏輸入鍵盤Android
- 解決webapp 鍵盤不隱藏WebAPP
- 點選按鈕實現隱藏一個元素程式碼例項
- 點選開關顯示或者隱藏input文字框
- 安卓開發 點選空白處收起鍵盤安卓
- 點選按鈕實現隱藏和顯示的切換程式碼
- 【工具類】Android 最有效的隱藏軟鍵盤方法Android
- Android輸入鍵盤隱藏解決方案Android
- Android 監聽鍵盤彈起及隱藏Android
- jQuery點選按鈕實現div的隱藏和顯示切換效果jQuery
- JS判斷鍵盤是否按的Enter鍵並觸發指定按鈕點選操作JS
- Android開發,在Fragment中,隱藏或關閉軟鍵盤(虛擬鍵盤)的方法AndroidFragment
- JS實現點選引數皮膚按鈕顯示或隱藏資料JS
- 點選同一按鈕實現div的隱藏與顯示切換
- 隱藏的輸入框調起軟鍵盤問題--ios/安卓iOS安卓
- js實現的點選顯示或者隱藏相關內容JS
- CSS點選隱藏和顯示div效果CSS
- 監聽Android軟體盤彈出及隱藏Android
- jsp頁面中點選(checkbox)或者radio隱藏trJS
- 點選鍵盤的next按鈕,在不同的textField之間換行
- 點選元素實現當前元素隱藏效果
- 啟動按ctrl鍵 遮蔽自動隱藏功能
- jQuery實現簡單點選隱藏和點選顯示列表的功能jQuery