Как отключить панель действий навсегда


138

Я могу скрыть панель действий в сотах, используя этот код:

getActionBar().hide();

Но когда открывается клавиатура и пользователь что-нибудь копирует, панель действий отображается снова. Как я могу отключить панель действий навсегда?


2
Нашел ответ ххх <activity android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen" ....>
Biji

1
это не панель действий, когда вы пытаетесь скопировать, вставьте его вид по умолчанию.
Падма Кумар

да, но после завершения копирования и вставки он все еще не исчез
Биджи

getSupportActionBar (). hide ();
Амея Салагре

Ответы:


253

Если вы используете Theme.Holo.Lightи хотите использовать Theme.Holo.Light.NoActionBarвариант на устройствах до 3.2, вы можете добавить его в свой styles.xml:

<style name="NoActionBar" parent="@android:style/Theme.Holo.Light">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style> 

а затем установите его в качестве темы своей деятельности:

<activity android:theme="@style/NoActionBar" ... />

8
Это правильный ответ. Не удаляет пользовательские темы, такие как решение @Biji.
phreakhead

1
Есть идеи, какой дополнительный флаг нужно установить, чтобы скрыть панель уведомлений?
jesses.co.tt 07

1
Я также счел необходимым наследовать от FragmentActivity вместо ActionBarActivity.
Meanman

4
@ jesses.co.tt Панель уведомлений можно удалить с помощью<item name="android:windowFullscreen">true</item>
Майк Бакстер,

У меня это не сработало. Использовано следующее: stackoverflow.com/questions/29790070/…
Christopher Smit

116

Установив тему активности в Manifest,

<activity
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
....
>

это кажется единственным правильным способом сделать это. особенно если у вас есть относительное расположение внизу ...
jcfrei

1
К сожалению, это единственный способ приступить к работе. Он удаляет настраиваемые темы, но ActionBarдля меня это единственное, что полностью удаляет .
RileyE

3
Это не работает с применением темы AppCompat в новом ADT. Я не думаю, что бороться с этим - попытка полностью отказаться от AppCompat - тоже хорошее решение! Я пробовал подход @monchote, и он у меня работает
Эрикн

это должно быть <activity android: theme = "@ android: style / Theme.NoTitleBar"> вместо <activity android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen">
Амандип Рохила

На Samsung Galaxy J2 это вызывает сбой приложения, но без проблем на Nexus 9
Suici Doga


31
<application
    .
    .
    android:theme="@android:style/Theme.Holo.Light.NoActionBar"
    . >

может это поможет тебе


3
Обратите внимание, что для этого метода требуется минимум API уровня 13
Olumide

23

С созданным по умолчанию в Android Studio суперклассом Activity не работает ActionBarActivityни одно решение в других ответах. Чтобы решить, просто измените суперкласс:

public class xxxActivity extends ActionBarActivity{

кому:

public class xxxActivity extends Activity {

Это сделало это для меня. Спасибо за вашу помощь.
j_fulch

17

Если вы хотите получить полноэкранный режим без ActionBar и Title.

Добавьте его в style.xml

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
      <item name="windowActionBar">false</item>
      <item name="windowNoTitle">true</item>
      <item name="android:windowFullscreen">true</item>
</style>

и используйте стиль в manifest.xml.

android:theme="@style/AppTheme.NoActionBar" 

13

Перейдите в styles.xml Измените этот DarkActionBar на NoActionBar

style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

12

Лучший способ, который я нашел, который дает настраиваемые темы и не дает панели действий, - это создать SuperClass для всех действий в моем проекте и в нем onCreate () вызвать следующую строку кода:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

У меня всегда получается. Единственная проблема в этом подходе заключается в том, что вы увидите панель действий на долю секунды при запуске приложения (не действия, а всего приложения).



7

Вы можете принудительно скрыть панель действий просто:

ActionBar  actionbar = getSupportActionBar();
actionBar.hide();

Просто используйте тему по умолчанию.


6

Не используйте тему Holo, и панель действий исчезнет. Этот код работает для меня с API 8+ с поддержкой lib v7:

<style name="NoActionBar" parent="@style/Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
</style>

установите эту тему для своей деятельности:

<activity android:theme="@style/NoActionBar" ... />

и в вашем классе активности.

Он работает, даже когда расширяет ActionBarActivity.


6

Если вам просто нужна тема без панели действий, вы можете использовать вариант NoActionBar, например. если ваша базовая тема такая, как показано ниже

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

тогда вы можете использовать

<style name="AppThemeNoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

Но если вы хотите сохранить свойства своей основной темы, то есть AppTheme, вы можете сделать, как показано ниже

<style name="AppThemeNoActionBar" parent="AppTheme">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

Таким образом вы можете сохранить все свойства своей базовой темы, и вам не нужно явно добавлять их в тему NoActionBar :)


6

В разделе res -> values ​​-> styles.xml

+ Изменить

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

Чтобы

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">


5

Вот быстрое решение.

Вы найдете файл styles.xml и измените базовую тему приложения на «Theme.AppCompat.NoActionBar», как показано ниже.

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
</style>

3

Ниже приведены шаги для постоянного скрытия панели действий:

  1. Откройте app / res / values ​​/ styles.xml.
  2. Найдите элемент стиля с именем «apptheme». Должно быть похоже на <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">.
  3. Теперь замените родительскую тему любой другой темой, которая содержит «NoActionBar» в своем имени.

    а. Вы также можете проверить, как выглядит тема, переключившись на вкладку дизайна в activity_main.xml, а затем попробовав каждую тему, представленную в раскрывающемся списке тем пользовательского интерфейса.

  4. Если ваша MainActivity расширяет AppCompatActivity , убедитесь, что вы используете тему AppCompat.


3

Введите этот код в свой onCreateметод перед setContentView:

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);

3

Я хотел бы опубликовать подход дизайнера к этому, это позволит отделить дизайн от вашей бизнес-логики:

Шаг 1. Создайте новый стиль в (res-> values-> styles.xml): В основном это копия вашей общей схемы с другим родителем - parent = "Theme.AppCompat.Light.NoActionBar"

<!-- custom application theme. -->
    <style name="MarkitTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimary</item>
        <item name="colorAccent">@color/colorAccent</item>

        <item name="android:windowNoTitle">true</item>
    </style>

Шаг 2: В вашем AndroidManifest.xml добавьте эту тему к желаемому действию: например, я хочу, чтобы мое основное действие было без панели действий, поэтому добавьте это, как показано ниже:

<activity android:name=".MainActivity"
            android:theme="@style/MarkitTheme">

Это лучшее решение для меня после многих попыток.


2

в функции onCreate добавьте следующий код

ActionBar actionBar = getSupportActionBar();
actionBar.hide();

и просто импортируйте android.support.v7.app.ActionBar


2

Убедитесь, что вы создали новую тему, изменив имя темы по умолчанию в styles.xmlфайле на:

 <style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar">

а затем измените тему из раскрывающегося под main_activity.xmlвашей темой на то, что вы назвали своей темой.


1

Еще одно интересное решение, когда вы хотите сохранить ViewPager при удалении панели действий, - это иметь стиль как показано

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:actionBarStyle">@style/NoActionBarStyle</item>
    <item name="android:windowContentOverlay">@null</item>
</style>
<style name="NoActionBarStyle" parent="android:Widget.Holo.ActionBar">
    <item name="android:backgroundSplit">@null</item>
    <item name="android:displayOptions"></item>
</style>

Таким образом, большинство приложений Dialer в Android показывают ViewPager без панели действий.

Ссылка: https://github.com/CyanogenMod/android_packages_apps_Dialer


этот раствор оставит белую область сверху.
Felipe FMMobile

Это сработало для меня на Android 2.3 с Theme.AppCompat.Light, если я изменил родительский элемент NoActionBarStyle на @ style / Widget.AppCompat.ActionBar.TabBar (я использую ViewPager)
TouchBoarder

1

попробуйте это в своем манифесте

 <activity
        android:name=".MainActivity"
        android:theme="@android:style/Theme.Holo.NoActionBar"
        android:label="@string/app_name" >

1
  protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   android.support.v7.app.ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
    setContentView(R.layout.activity_main);

1

В ActionBarAndroid есть два способа отключить .

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.activity_main); 

1

Используйте это в styles.xmlфайле:


<style name="MyTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>

0

Я использую это решение:

в манифесте внутри вашего тега активности:

android:label="@string/empty_string"

и в strings.xml:

<string name="empty_string">""</string>

Таким образом, вы сохраняете ActionBar (или Toolbar) с заголовком, но при создании Activity, заголовок автоматически становится пустым.


0

Как ни странно, у меня ничего из этого не сработало при сборке Nexus 7 под управлением 4.4.2 (API 19). По большей части, по крайней мере, в последней версии Android Studio (1.2.1.1) после создания пустого приложения активности:

android: theme = "@ style / AppTheme"

находится в элементе приложения, а не в элементе действия. Если я удалил указанный выше код или попытался изменить его на:

android: theme = "@ android: style / Theme.Holo.Light.NoActionBar"

приложение не запускается ... если это происходит с вами, просто зайдите в свой файл styles.xml (res> values> styles.xml) и добавьте .NoTitleBar в конец родительского элемента, как этот блок:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>

Никаких изменений в файле AndroidManifest не требуется.


0

В вашем activity_main.xmlвы можете настроить оттуда в строке:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
.......
    android:theme="@style/Theme.Design.Light.NoActionBar"
.......    
">

Иногда, когда вы можете увидеть такие вещи, щелкните здесь , вы можете выбрать здесь тему «noActionBar».

Надеюсь, я вам помог.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.