2011-02-23 3 views
0

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

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

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); 

И fanally если добавить

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

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

Как достичь размера, центрированного окна в полноэкранном режиме?

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

+0

Какую часть жизненного цикла приложения вы программно меняете в окне? – f0ster

+0

Основная деятельность – Robin

+0

thats odd. Я бы сказал, что это ошибка андроида. – Robin

ответ

0

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

/* 
* (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); 
} 
Смежные вопросы