應用場景:
activity
包含四個 fragment
,其中fragment
各自有自己的 EditText
,將 code 寫在 activity
中即可。
於 activity
覆寫 dispatchTouchEvent
方法如下:
/**
* 點擊空白處隱藏鍵盤
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if (isShouldHideInput(v, ev)) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
return super.dispatchTouchEvent(ev);
}
// 必不可少,否则所有的组件都不会有TouchEvent了
if (getWindow().superDispatchTouchEvent(ev)) {
return true;
}
return super.dispatchTouchEvent(ev);
}
private boolean isShouldHideInput(View v, MotionEvent event) {
if (v != null && (v instanceof EditText)) {
int[] leftTop = {0, 0};
//获取输入框当前的location位置
v.getLocationInWindow(leftTop);
int left = leftTop[0];
int top = leftTop[1];
int bottom = top + v.getHeight();
int right = left + v.getWidth();
if (event.getX() > left && event.getX() < right
&& event.getY() > top && event.getY() < bottom) {
// 点击的是输入框区域,保留点击EditText的事件
return false;
} else {
return true;
}
}
return false;
}
應用場景:fragment
各自的 EditText
佈局檔加上屬性
<EditText
...
android:singleLine="true"
android:imeOptions="actionDone"/>
Android editText点击空白处隐藏键盘
android 回车键事件编程
實作相關
Android 4.4 之前,儲存空間:
Aug 21, 2023//設定隱藏標題 getSupportActionBar().hide(); //設定隱藏狀態 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN); Ref. 【Android】隱藏標題列(Title Bar)與狀態列(Status Bar)
Jul 28, 2023角色GATT Server/ Peripheral: BLE device GATT Client/ Central: 手機 未配對情況下,BLE device 會一直廣播,直到手機發送 request 給 BLE device,等待 BLE device 回傳 response。 定義: uuid 0x2800 is Service uuid 0x2803 is Characteristics Ref.
May 25, 2023簡述 Service可以在背景不斷的工作,直到停止或是系統無法提供資源為止。 Service 需要透過某Activity 或者其他Context 物件來啟動。 Service不需要和 user 互動,所以沒有操作介面。 生命週期與Activity是各自獨立的,Activity就算關閉,Service仍然可以繼續執行。 類似 BroadcastReceiver,需要定義一個繼承 Service 的類別,並覆寫其中的生命週期函數,最後在AndroidManifest.xml中宣告才能使用 Service可以同時支援 Started 與 Bind 兩種模式。在這種情況下,Service 需要等到兩種模式都被關閉才會觸發onDestroy()事件。 Service 只有第一次被啟動時,會執行onCreate(),若重複啟動則不會執行onCreate()。 Service的運作優先權相當的高,一般來說除非系統資源耗盡,否則 Android 不會主動關閉一個已被啟動的Service。一旦系統有足夠的資源,被 Android 關閉的Service也會被重新啟動。 兩者都需要在AndroidManifest.xml宣告
May 9, 2023or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up