Этот вопрос относится к проблеме с устройствами Xiomi с MIUI поверх него.
Как выбрать полноэкранный режим (Жест) или выбрана кнопка навигации (мягкая навигация)?
Я пробовал несколько решений, но они работают на других устройствах, но не работают на 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 всегда возвращает зарезервированное с навигационной панели.
Спасибо.