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);
}
}
Ответы
Ответ 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"