Подтвердить что ты не робот

Android: как скрыть ActionBar при определенных действиях

Я разработал простое демо-приложение с заставкой экрана и некоторые обычные экраны.

У меня есть панель действий наверху, которая содержит логотип. Все это прекрасно выглядит на моем телефоне (Galaxy s1 I9000 V2.3), но когда я тестирую его на Galaxy s2 v4, панель действий появляется также в заставке и на экране карты.

Активность спалса и карты даже не наследуется от ActionBarActivity, так как это возможно и как я могу заставить его уйти?

манифеста:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/Theme.AppCompat.Light" >
        <activity
            android:name=".HomeActivity"
            android:icon="@drawable/android_logo"
            android:label=""
            android:logo="@drawable/android_logo" >

            <!--
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            -->
        </activity>
        <activity
            android:name=".MapActivity"
            android:label="" >
        </activity>
        <activity
            android:name=".PackageActivity"
            android:icon="@drawable/android_logo"
            android:label=""
            android:logo="@drawable/android_logo" >
        </activity>
        <activity
            android:name=".SplashActivity"
            android:label="" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

Определение MapActivity (оно длинное, поэтому я включил только определение):

public class MapActivity extends FragmentActivity implements LocationListener

Активность всплеска:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;

public class SplashActivity extends Activity{

    private static final long SPLASH_DISPLAY_LENGTH = 2000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                Intent mainIntent = new Intent(SplashActivity.this,HomeActivity.class);
                SplashActivity.this.startActivity(mainIntent);
                SplashActivity.this.finish();
            }
        }, SPLASH_DISPLAY_LENGTH);

    }

}
4b9b3361

Ответ 1

Примените следующее в своей теме для Activity в AndroidManifest.xml:

<activity android:name=".Activity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Это должно сделать трюк.

Ответ 2

Поскольку вы спрашиваете о том, как спрятаться в определенном упражнении, это то, что вам нужно:

getSupportActionBar().hide(); 

Ответ 3

1. Вернитесь к своему файлу manifest.xml.

2. Find activity tag, для которого вы хотите скрыть свой ActionBar, а затем add,

Android: тема = "@стиль/Theme.AppCompat.NoActionBar"

           <activity
            android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.NoActionBar"
            >

Ответ 4

Если вы хотите получить полный экран без действийBar и 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.

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

Ответ 5

ActionBar обычно существует вдоль Fragments, поэтому из Activity вы можете скрыть его

getActionbar().hide();
getActionbar().show();

и из Fragment вы можете сделать это

getActivity().getActionbar().hide();
getActivity().getActionbar().show();

Ответ 6

Если вы используете Theme.AppCompat.Light, лучшим эквивалентом будет Theme.AppCompat.Light.NoActionBar.

Я обнаружил, что использование Theme.AppCompat.NoTitleBar заставило мой текст кнопки быть невидимым, поэтому я использую Theme.AppCompat.Light.NoActionBar.

<activity android:name=".Activity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.AppCompat.Light.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Ответ 7

Вы можете использовать режим низкого профиля Смотрите здесь

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

Ответ 8

Это работает для меня! Поместите это в свою деятельность в манифестах

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

Вы также можете сделать свою собственную тему в файле styles.xml следующим образом:

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

Надеюсь, это поможет.

Ответ 9

Вышеупомянутые ответы помогут в действии ActionBar. Чтобы добавить к нему, используйте следующий код, если вы используете экран заставки: Используйте это, прежде чем устанавливать представление содержимого:

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

Просто, чтобы уточнить, вот как вы это делаете:

    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);         
    setContentView(R.layout.activity_main);

Это сделает ваш экран полным экраном, т.е. удалит верхнюю панель, где вы увидите сетевую панель, и т.д.

Ответ 10

Примените следующее в своей Теме для Действия в AndroidManifest.xml:

<activity android:name=".DashboardActivity"
        android:theme="@style/AppFullScreenTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Затем примените следующее в вашем стиле в style.xml

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

Ответ 11

Это работает в API 27

В файле styles.xml замените код на следующий....

<resources>
    <!-- No Action Bar -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

Затем в файлы (например, activity_list.xml), в которых вы хотите иметь панель инструментов, поместите следующий код.

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@color/colorPrimary"/>

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

Ответ 12

Отсюда:

Начиная с Android 3.0 (уровень API 11), все действия, использующие тему по умолчанию, имеют панель действий в качестве панели приложения. Тем не менее, функции панели приложений постепенно добавляются в родную панель действий в различных версиях Android. В результате нативный ActionBar ведет себя по-разному в зависимости от того, какую версию системы Android может использовать устройство. Напротив, самые последние функции добавляются в версию панели инструментов библиотеки поддержки и доступны на любом устройстве, которое может использовать библиотеку поддержки.

Поэтому одним из вариантов является полное отключение ActionBar (в файле app manifest.xml), а затем добавление панели инструментов на каждую страницу, для которой требуется ActionBar.

(перейдите по ссылке выше для пошагового объяснения)

Ответ 13

Заменить AndroidManifest.xml

android:theme="@style/FullscreenTheme"

в

android:theme="@style/Theme.Design.NoActionBar"