この質問は、MIUI を搭載した Xiomi デバイスの問題に固有のものです。
フルスクリーン モード (ジェスチャー) またはナビゲーション ボタン (ソフト ナビゲーション) が選択されていることを検出するにはどうすればよいですか?
いくつかの解決策を試しましたが、他のデバイスでは機能しますが、Xiomi または MIUI では機能しませんでした。
SOで利用可能なこのソリューションを試したので、別のソリューションを提供してください。
1
public boolean hasNavBar (Resources resources)
{
int id = resources.getIdentifier("config_showNavigationBar", "bool", "android");
return id > 0 && resources.getBoolean(id);
}
2
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
boolean hasHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);
if (hasBackKey && hasHomeKey) {
// no navigation bar, unless it is enabled in the settings
} else {
// 99% sure there's a navigation bar
}
3
View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener
(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if ((visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0) {
// TODO: The navigation bar is visible. Make any desired
// adjustments to your UI, such as showing the action bar or
// other navigational controls.
} else {
// TODO: The navigation bar is NOT visible. Make any desired
// adjustments to your UI, such as hiding the action bar or
// other navigational controls.
}
}
});
ナビゲーションバーが現在表示されているかどうかを知る方法はありますか?
また、実際の幅と使用可能な幅を計算しようとしましたが、MIUI は常にナビゲーション バーの予約済みを返すようです。
ありがとう。