ユーザーがstatus- & navigation-barにアクセスできないフルスクリーンアプリケーションを実現しようとしています。
できればそれらを完全に削除したいのですが、私が読んだ限りでは、デバイスをルート化しない限り、これは不可能です
したがって、私の質問は基本的に次のとおりです。ポップアップメニューを表示するときに、ナビゲーションバーのアイコンを非表示にするにはどうすればよいですか?
前
後
これまでのところ、私は試しました:
hideNavigation()
ポップアップ メニューが表示される前後の呼び出し- 呼びかける
hideNavigation()
_onCreate(), onResume() & onWindowFocusChanged()
- 別のビューへのフォーカスのリクエスト
- ドロップダウンからフォーカスをクリアしようとしています (試行の失敗、これを行う方法が実際には見つかりませんでした)
- アイコンの色を変更すると、「偽装」して非表示になります (試行に失敗しました。これを行う方法が実際には見つかりませんでした)
hideNavigation()
と組み合わせて使用するHandler
(試行に失敗しました。正しく実行しなかった可能性があります)- いくつかの COSU/KIOSK モード オプションを設定しようとしています (ナビゲーション バー全体を完全に無効にする方法があるのではないでしょうか?戻るボタンを非表示にする方法はまだ見つかりません) 。
アクティビティ
class PinCodeActivity, HasTitleBar {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_pin_code)
initTitleBarWith(this)
hideNavigation()
}
override fun onResume() {
super.onResume()
hideNavigation()
}
fun hideNavigation() {
window.decorView.apply {
systemUiVisibility = FLAGS
}
}
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
hideNavigation()
}
}
const val FLAGS = (View.SYSTEM_UI_FLAG_LOW_PROFILE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
タイトルバー
fun HasTitleBar.initTitleBarWith(activity: Activity, resId: Int = R.id.titleBar) {
val langButton = activity.findViewById<View>(resId).findViewById<Button>(R.id.tbLanguageChoiceBtn)
val wrapper = ContextThemeWrapper(activity, R.style.MyPopupMenu)
val popupMenu = PopUpLanguageMenu(wrapper, langButton)
langButton.setOnClickListener {
activity.hideNavigation()
popupMenu.showMenu()
activity.hideNavigation()
}
}
ポップアップメニュー
class PopUpLanguageMenu constructor(context: Context, view: View) : PopupMenu(context, view) {
private var popupHelper: MenuPopupHelper
init {
val popUpMenu = PopupMenu(context, view).apply {
inflate(R.menu.menu_language_dropdown)
}
popupHelper = MenuPopupHelper(context, popUpMenu.menu as MenuBuilder, view)
popupHelper.run {
gravity = Gravity.END
setForceShowIcon(true)
}
}
fun showMenu() {
popupHelper.show()
}
}
期待される結果: ナビゲーション バーとそのアイコンが非表示になり、ポップアップ メニューが表示された後もアイコンは非表示のままです
実際の結果:ナビゲーションバーとそのアイコンは非表示になり、ポップアップメニューが表示された後、アイコンが表示されます