質問編集履歴

2

詳細の追加

2017/08/02 06:53

投稿

xoxoo
xoxoo

スコア29

test CHANGED
@@ -1 +1 @@
1
- Javas初心者です。
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

ソースと詳細の追加

2017/08/02 06:53

投稿

xoxoo
xoxoo

スコア29

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
+ タッチイベントで分岐の処理を行いたいです。