AndroidでPopWindowをクリックしてウィンドウの外とリターンキーが消え、インターフェースロックの実現
2707 ワード
転送先:http://houxiyang.com/archives/70/
------------------------------------
ここ数日は谷住網のand roidをして、混天の暗さに応用しました.
インスピレーションセットに参加する操作をするには、ユーザー登録が必要です.
実現する機能は簡単です.後でリマインダとキーボードのリターンキーをクリックしてPopWindowを脱退します.ユーザー登録を奨励する目的を達成するために、他の部分のウィンドウをクリックしても消えないです.結局、私達の目的はもっと多くのユーザー登録ではないです.リターンキーをクリックしても消えることができます.
もちろん、他の部分をクリックしてどうやって消えますか?また、後ろの画面をロックしますか?下を見てください
PopupWindowが現れたら、デフォルトはすべての操作が無効になります.HOMEボタンを除いて.また後ろの界面を操作できる.
後ろの画面をロックしたいです.簡単です.ポプラWindowはfocusableです.
このように、表示する際には、popupWindowにフォーカスをとり、後の内容は非アクティブとなります.
しかし、スクリーンの他の部分をクリックして消すことはできません.リターンキーもだめです.
この場合は、ポップWindowにBackground Drawableをセットします.レイアウトを定義しておけば、スタイルを壊す恐れがあります.空いているDrawableをセットすればいいです.
このように、スクリーンの他の部分をクリックしてもリターンキーを押しても、消える機能が実現されます.
私の状況は上とは違って、ユーザーにスクリーンの他のところを注文して消えてしまいました.登録したいです.うっかりスクリーンの他のところに触れてしまいました.すぐになくなりました.登録ユーザーが少なくなりました.
私が実現したいのはリターンキーだけで、popwindowを消します.ここでviewを書き換える必要があります.このviewはpopwindowのviewです.もちろん一番parentのviewです.コードを付ける
分かりましたか
popupwindowを生成するそのviewもfocusableのです.念のために、Focusable Intouch Modeを設けるのもtrueです.
このようにしてもう一度そのviewのonKeyListenerを書けばいいです.
------------------------------------
ここ数日は谷住網のand roidをして、混天の暗さに応用しました.
インスピレーションセットに参加する操作をするには、ユーザー登録が必要です.
実現する機能は簡単です.後でリマインダとキーボードのリターンキーをクリックしてPopWindowを脱退します.ユーザー登録を奨励する目的を達成するために、他の部分のウィンドウをクリックしても消えないです.結局、私達の目的はもっと多くのユーザー登録ではないです.リターンキーをクリックしても消えることができます.
もちろん、他の部分をクリックしてどうやって消えますか?また、後ろの画面をロックしますか?下を見てください
PopupWindowが現れたら、デフォルトはすべての操作が無効になります.HOMEボタンを除いて.また後ろの界面を操作できる.
後ろの画面をロックしたいです.簡単です.ポプラWindowはfocusableです.
popupWindow.setFocusable(true);
このように、表示する際には、popupWindowにフォーカスをとり、後の内容は非アクティブとなります.
しかし、スクリーンの他の部分をクリックして消すことはできません.リターンキーもだめです.
この場合は、ポップWindowにBackground Drawableをセットします.レイアウトを定義しておけば、スタイルを壊す恐れがあります.空いているDrawableをセットすればいいです.
popupWindow.setBackgroundDrawable(new PaintDrawable());
このように、スクリーンの他の部分をクリックしてもリターンキーを押しても、消える機能が実現されます.
私の状況は上とは違って、ユーザーにスクリーンの他のところを注文して消えてしまいました.登録したいです.うっかりスクリーンの他のところに触れてしまいました.すぐになくなりました.登録ユーザーが少なくなりました.
私が実現したいのはリターンキーだけで、popwindowを消します.ここでviewを書き換える必要があります.このviewはpopwindowのviewです.もちろん一番parentのviewです.コードを付ける
View layout = inflater.inflate(R.layout.account_dialog,
(ViewGroup) activity.findViewById(R.id.account_dialog));
layout.setFocusable(true); //
layout.setFocusableInTouchMode(true);
popupWindow = new PopupWindow(layout);
popupWindow.setFocusable(true);
// onKeyListener
layout.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
accountDialog.dismiss();
accountDialog = null;
return true;
}
return false;
}
});
分かりましたか
popupwindowを生成するそのviewもfocusableのです.念のために、Focusable Intouch Modeを設けるのもtrueです.
このようにしてもう一度そのviewのonKeyListenerを書けばいいです.