Я новичок в разработке Android. Я хочу, чтобы мое приложение поддерживало размер экрана моего устройства, т.е. 1080 x 2160 pixels
. В настоящее время есть черная нижняя панель, которая отображается там, где были бы кнопки навигации.
Обратите внимание, что я не хочу полноэкранный режим. Я отключил навигацию по кнопкам на моем устройстве. Только для этого приложения отображается нижний черный прямоугольник. Я просто хочу, чтобы мое приложение поддерживало систему навигации по жестам моего устройства вместо кнопок. Как сделать так, чтобы нижняя панель исчезла с помощью Java (Android Studio
), чтобы мое приложение использовало это пространство?
Попробуйте добавить этот код
@Override
protected void onCreate(Bundle savedInstanceState) {
...
hideSystemUI(this, 1000);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
// Hide bar after 1 second
hideSystemUI(this, 1000);
}
}
public static void hideSystemUI(@NonNull final Activity activity, final int delayMs) {
View decorView = activity.getWindow().getDecorView();
int uiState = View.SYSTEM_UI_FLAG_IMMERSIVE
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
final Handler handler = new Handler();
decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if (visibility == View.VISIBLE) {
Runnable runnable = new Runnable() {
@Override
public void run() {
hideSystemUI(activity, 1000);
}
};
handler.postDelayed(runnable, delayMs);
}
}
});
decorView.setSystemUiVisibility(uiState);
}
ПРЕДУПРЕЖДЕНИЕ
Если у вас есть два действия, добавьте это перед изменением
View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(null);
Вы можете попробовать это
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
Привет, пожалуйста, попробуйте ниже код
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);