質問編集履歴
2
詳細の追加
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
キーボードの表示を検知してナビゲーションバー非表示の再処理を行いたい
|
test
CHANGED
@@ -69,3 +69,15 @@
|
|
69
69
|
で、キーボードが表示されている時の処理を【Activity1】のTextViewの
|
70
70
|
|
71
71
|
タッチイベントで分岐の処理を行いたいです。
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
###処理の背景
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
通常非表示にしているナビゲーションバーですが、フリック動作でバーが出現してしまうので、バーの領域の部分に、表示レイヤーをTYPE_SYSTEM_ERRORにしたTextViewを配置しているのですが、キーボードが表示されるときに、非表示にしていたはずのナビゲーションバーが出てきてしまうのでナビゲーションバー非表示の再処理を行うためです。
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
非表示にしていたはずのナビゲーションバーが出てきてしまうことで、ナビゲーションバーの表示領域に配置したTextViewの位置がずれてしまうという問題がおきています。
|
1
ソースと詳細の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -11,3 +11,61 @@
|
|
11
11
|
###補足情報
|
12
12
|
|
13
13
|
True or False で分岐処理したいです。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
###追記
|
18
|
+
|
19
|
+
//端末にインストールされているキーボードのプロセス名をmKeyboards変数に格納
|
20
|
+
|
21
|
+
public void setKeyboards() {
|
22
|
+
|
23
|
+
mKeyboards.clear();
|
24
|
+
|
25
|
+
for (InputMethodInfo imi : mInputMethodManager.getInputMethodList()) {
|
26
|
+
|
27
|
+
mKeyboards.add(imi.getServiceInfo().processName);
|
28
|
+
|
29
|
+
}
|
30
|
+
|
31
|
+
}
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
//現在動作しているServiceの一覧をlistに格納して、for文の中でキーボードのプロセス名と一致するものをチェック
|
36
|
+
|
37
|
+
public boolean isKeyboardShow() {
|
38
|
+
|
39
|
+
List<ActivityManager.RunningServiceInfo> list = mActivityManager.getRunningServices(Integer.MAX_VALUE);
|
40
|
+
|
41
|
+
if (list == null) {
|
42
|
+
|
43
|
+
return false;
|
44
|
+
|
45
|
+
}
|
46
|
+
|
47
|
+
for (ActivityManager.RunningServiceInfo rsi : list) {
|
48
|
+
|
49
|
+
//キーボードの状態を判定
|
50
|
+
|
51
|
+
//キーボードが表示されていないときは1、キーボードが表示されているときは2を返します。
|
52
|
+
|
53
|
+
if (mKeyboards.contains(rsi.process) && rsi.clientCount > 1) {
|
54
|
+
|
55
|
+
return true;
|
56
|
+
|
57
|
+
}
|
58
|
+
|
59
|
+
}
|
60
|
+
|
61
|
+
return false;
|
62
|
+
|
63
|
+
}
|
64
|
+
|
65
|
+
}
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
で、キーボードが表示されている時の処理を【Activity1】のTextViewの
|
70
|
+
|
71
|
+
タッチイベントで分岐の処理を行いたいです。
|