android window
# window 的 SoftInputMode
- SOFT_INPUT_ADJUST_PAN
- SOFT_INPUT_ADJUST_RESIZE
- SOFT_INPUT_STATE_ALWAYS_VISIBLE
- SOFT_INPUT_STATE_ALWAYS_HIDDEN
# case
# 软键盘中 window 的 Flag 设置
- 创建 Dialog 对 Window 进行属性设置
Window window = dialog.getWindow();
if (window != null) {
window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
window.setGravity(Gravity.TOP);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(getResources().getColor(<id>));
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
- 在 Dialog show 重置,
Window#InputMode
// 在 Dialog#show方法,动态设置window的attr
@Override
public void show() {
Window window = getWindow();
if (window != null) {
if (showEmoji) {
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
} else {
if (isBottomContainerEmpty) {
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
} else {
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
}
}
super.show();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
上次更新: 2024/12/01, 17:09:08