Android: установить размер макета, отцентрировать его и установить в полноэкранном режиме не работает? - PullRequest
0 голосов
/ 23 февраля 2011

Я хочу установить ширину и высоту окна, отцентрировать его и установить в полноэкранном режиме, чтобы скрыть верхнюю панель.

С помощью этих линий я могу установить размер и установить его в полноэкранном режиме, но центрирование не требуетЭффект.

Window window = getWindow(); 
window.setGravity(Gravity.CENTER | Gravity.FILL_VERTICAL | Gravity.FILL_HORIZONTAL); 
window.setLayout(480, 320); 
window.requestFeature(Window.FEATURE_NO_TITLE); 
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

Следующее устанавливает размер и центрирует его, но верхняя полоса видна, поэтому полноэкранный режим не действует.

Window window = getWindow(); 
window.setGravity(Gravity.CENTER); 
window.setLayout(480, 320); 
window.requestFeature(Window.FEATURE_NO_TITLE); 
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 

И фанатично, если я добавлю

<application android:icon="@drawable/icon" android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen">

Окно центрировано, размеры установлены, и оно полноэкранное ... но только при первом запуске приложения.После закрытия и повторного запуска приложения оно перестает работать в полноэкранном режиме.

Как мне получить полноразмерное окно по центру?

@ edit: я понял, что еслиЯ выхожу из приложения с помощью кнопки возврата устройства, она работает всегда.Верхняя панель становится видимой только в том случае, если я закрываю приложение кнопкой «Домой».

1 Ответ

0 голосов
/ 24 февраля 2011

Так что у меня нет решения, но есть небольшой взлом.Следующее уничтожает приложение при нажатии кнопки домой.Это заставит приложение перезапустить и снова скрыть верхнюю панельЯ не доволен этим взломом, но пока он работает.

/*
 * (non-Javadoc)
 * 
 * @see android.app.Activity#onStop()
 */
@Override
protected void onStop()
{
    super.onStop();


    //hack to prevent stopping fullscreen mode if the home button was pressed
    ActivityManager am = (ActivityManager) this
                    .getSystemService(ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
    ComponentName componentInfo = taskInfo.get(0).topActivity;

    if(componentInfo.getShortClassName().equalsIgnoreCase(".Launcher"))
    {
        onDestroy();
    }
}


@Override
public void onDestroy()
{
    super.onDestroy();
    System.runFinalizersOnExit(true);
    System.exit(0);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...