Скрытие заголовка в полноэкранном режиме?
Есть ли способ скрыть заголовок окна, чтобы он не отображался в полноэкранном режиме (
getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN,
LayoutParams.FLAG_FULLSCREEN)
), но затем появится на
getWindow().clearFlags(LayoutParams.FLAG_FULLSCREEN)
?
requestWindowFeature(Window.FEATURE_NO_TITLE)
Это, конечно, не вариант, так как это не позволит получить его обратно.
6 ответов:
Способ, которым я справляюсь с этим в моих играх для Android, заключается в вызове следующей строки в onCreate () моей активности
requestWindowFeature(Window.FEATURE_NO_TITLE);
Затем я могу отключить и включить полноэкранный режим, используя следующий код в моем классе activity (обычно вызывается из опции меню) (переменная m_contentView - это представление из findViewById (), используя идентификатор, который вы использовали при вызове setContentView () в вашем on create)
Я использую эту технику во всех моих играх без проблем.private void updateFullscreenStatus(boolean bUseFullscreen) { if(bUseFullscreen) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); } else { getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } m_contentView.requestLayout(); }
Зачем это делать вы говорите
RequestWindowFeature (Окно.FEATURE_NO_TITLE); конечно, это не вариант
?
:: EDIT::
Ну, если вы пытаетесь динамически показывать и скрывать его в течение всего времени действия, я не уверен, что вы можете сделать это с официальным заголовком окна из-за заметки, которая была упомянута о функциях окна, которые должны быть установлены перед вызовом setContentView () (link)
Одна вещь, которую вы могли бы сделать, это реализовать ваша собственная строка заголовка и динамически показывать и скрывать это... Я собрал этот пример, который должен настроить вас на правильный путь
Вот файл макета
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:fadingEdgeLength="0sp" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTitleBarLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/myTitleBarTextView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/app_name" android:paddingTop="4dip" android:paddingBottom="4dip" android:paddingLeft="6dip" android:textStyle="bold" android:shadowColor="#BB000000" android:shadowRadius="3.0" android:shadowDy=".25" /> <View android:layout_width="fill_parent" android:layout_height="1dip" android:background="#CCEEEEEE" android:padding="10dip" /> </LinearLayout> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" > <!-- Insert your regular layout stuff here --> <Button android:id="@+id/toggle_title_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Toggle Title" /> </ScrollView> </LinearLayout>
А вот код для основного действия, который позволит вам включать и выключать нашу пользовательскую строку заголовка
Это не выглядит идеально, но вы всегда можете поиграть с макетом еще немного, чтобы сделать это.package com.snctln.test.HelloGridView; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; public class HelloGridView extends Activity { public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv = (TextView)this.findViewById(R.id.myTitleBarTextView); tv.setBackgroundColor(0xFF848284); tv.setTextColor(0xFFFFFFFF); Button toggleTitleButton = (Button)this.findViewById(R.id.toggle_title_button); toggleTitleButton.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { LinearLayout ll = (LinearLayout)findViewById(R.id.myTitleBarLayout); if(ll.getVisibility() == View.GONE) { ll.setVisibility(View.VISIBLE); } else { ll.setVisibility(View.GONE); } } }); } }
Alt текст http://i39.tinypic.com/120sfp1.png
Моя другая мысль, если вы просто хотите скрыть все, чтобы показать индикатор выполнения почему бы не использовать ProgressDialog ?
Этот класс довольно прост в использовании...
progressDlg = ProgressDialog.show(context, getString(R.string.progress_dialog_title_prepare), getString(R.string.progress_dialog_body_prepare)); // do long running operation if(operationFailed) { progressDlg.cancel(); } else { progressDlg.dismiss(); }
Добавление
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
к тегу приложения в файле манифеста сделает все действия полноэкранными.
Чтобы отключить заголовок вашего приложения (это имя приложения)
requestWindowFeature(Window.FEATURE_NO_TITLE)
Чтобы отключить панель уведомлений сверху (поэтому запрос к менеджеру приложений android разрешить полноэкранный режим)
getWindow().addFlags(LayoutParams.FLAG_FULLSCREEN)
Надеюсь, это поможет любому, кто хочет знать разницу!!
Это сработало для меня .. в метод onResumeif(useFullscreen) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); } else { getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); }
На Android 3+ это может быть легко достигнуто путем вызова
getActionBar().hide()
иgetActionBar().show()
, чтобы соответственно показать и скрыть стандартную панель действийНа Android 1,2 лучшим решением (я думаю) является реализация пользовательского представления для yout "строка заголовка" и скрытие его по требованию (конечно, вызов
requestWindowFeature(Window.FEATURE_NO_TITLE);
в начале).
Это невозможно в соответствии с документами и Google group разработчиков android. чтобы реализовать это, вам нужно добавить "заголовок-бар-как" элемент макета с текстом и прогресс-бар и Скрыть / показать, когда вам это нужно. прямо сейчас-нет другого способа обойти это, так как управление строкой заголовка может быть сделано только до вызова setContentView и не изменено после.
Comments