Я разработал простое демонстрационное приложение с заставкой, картой и несколькими обычными экранами.
У меня есть панель действий вверху с логотипом. На моем телефоне (Galaxy s1 I9000 V2.3) все выглядит нормально, но когда я тестирую его на Galaxy s2 v4, панель действий появляется также на экране-заставке и на экране карты.
Активность spalsh и map даже не наследуется от 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);
}
}
java
android
android-actionbar
Томер
источник
источник
getActionBar
как действие не наследуется отActionBarActivity
<item name="android:windowActionBar">false</item>
разве это не скроет это на всех экранах?Когда вы спрашиваете, как спрятаться в определенной деятельности , вам нужно следующее:
источник
1. Зайдите в свой
manifest.xml
файл.2. , для которого вы хотите , чтобы скрыть свой ActionBar , а затем ,
Find
activity tag
add
<activity android:name=".MainActivity" android:theme="@style/Theme.AppCompat.NoActionBar" >
источник
Если вы хотите получить полноэкранный режим без 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.
<activity .... android:theme="@style/AppTheme.NoActionBar" > ...... </activity>
источник
ActionBar
Обычно существует вместе сFragments
тем отActivity
вы можете скрытьи
Fragment
вы можете это сделатьисточник
getSupportActionBar().hide();
в ActionBarActivityЕсли бы вы использовали 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>
источник
У меня это работает! Поместите это в свою деятельность в манифестах
<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>
Надеюсь на эту помощь.
источник
Вы можете использовать низкопрофильный режим См. Здесь
Просто найдите,
SYSTEM_UI_FLAG_LOW_PROFILE
что также затемняет кнопки навигации, если они присутствуют на экране.источник
Приведенные выше ответы помогут с ActionBar. Чтобы добавить к нему, используйте следующий код в случае, если вы используете заставку: Используйте это перед установкой представления содержимого:
Чтобы уточнить, вот как вы это делаете:
super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_main);
Это сделает ваш экран полноэкранным, т.е. уберет верхнюю панель, где вы видите панель сети и т. Д.
источник
Примените следующее в своей теме для действия в 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>
источник
// Скрываем ActionBar сверху
// Добавляем этот код в java файл
источник
Это работает в 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"/>
Если у вас есть проблемы, переключитесь на линейную компоновку (потому что это то, на чем тестируется этот код)
источник
От сюда :
Таким образом, один из вариантов - полностью отключить ActionBar (в файле app manifest.xml), а затем добавить панель инструментов на каждую страницу, для которой требуется ActionBar.
(перейдите по указанной выше ссылке для пошагового объяснения)
источник
Заменить AndroidManifest.xml
android:theme="@style/FullscreenTheme"
к
android:theme="@style/Theme.Design.NoActionBar"
источник
Добавьте новый стиль в свой style.xml
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="LoginTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
а затем добавьте следующую строку в свой манифест
<activity android:name=".Login" android:label="@string/app_name" android:theme="@style/LoginTheme" >
источник
Проверьте атрибут заполнения, если проблема все еще существует после изменения темы.
Проблема с заполнением пустого пространства поверх окна фрагмента / окна приложения
После того как вы удалите значение padding - top автоматически, пустое пространство удаляется.
источник