J'ai développé une application de démonstration simple avec un écran de démarrage, une carte et des écrans réguliers.
J'ai une barre d'action en haut qui contient un logo. Tout cela semble bien sur mon téléphone (Galaxy s1 I9000 V2.3), mais lorsque je le teste sur Galaxy s2 v4, la barre d'action apparaît également sur l'écran de démarrage et sur l'écran de la carte.
Les activités spalsh et map n'héritent même pas d'ActionBarActivity, alors comment est-ce possible et comment puis-je le faire disparaître?
Manifeste:
<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>
Définition de MapActivity (c'est un long terme, donc je n'ai inclus que la définition):
public class MapActivity extends FragmentActivity implements LocationListener
Activité Splash:
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);
}
}
Appliquez les éléments suivants dans votre thème pour l'activité dans 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>
Cela devrait faire l'affaire.
Lorsque vous demandez comment masquer dans une certaine activité, voici ce dont vous avez besoin:
getSupportActionBar().hide();
1.Allez dans votre fichier manifest.xml
.
2 .Find
le activity tag
pour lequel vous voulez masquer votre barre d’action, puis add
,
Android: theme = "@ style/Theme.AppCompat.NoActionBar"
<activity
Android:name=".MainActivity"
Android:theme="@style/Theme.AppCompat.NoActionBar"
>
Si vous voulez passer en plein écran sans actionBar ni titre.
Ajoutez-le dans 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>
et utilisez le style à l’activité de manifest.xml.
<activity ....
Android:theme="@style/AppTheme.NoActionBar" > ......
</activity>
La ActionBar
existe généralement le long de Fragments
donc vous pouvez la masquer à partir de la Activity
getActionbar().hide();
getActionbar().show();
et du Fragment
vous pouvez le faire
getActivity().getActionbar().hide();
getActivity().getActionbar().show();
Si vous utilisiez Theme.AppCompat.Light, un meilleur équivalent serait Theme.AppCompat.Light.NoActionBar.
J'ai constaté qu'en utilisant Theme.AppCompat.NoTitleBar, le texte de mon bouton était invisible, j'utilisais donc 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>
Cela fonctionne pour moi! Mettez ceci dans votre activité dans les manifestes
<activity
// ...
Android:theme="@style/Theme.AppCompat.Light.NoActionBar"
// ...
</activity>
Vous pouvez également créer votre thème personnalisé dans styles.xml comme ceci:
<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>
J'espère que cette aide.
Vous pouvez utiliser le mode Profil bas Voir ici
Il suffit de rechercher SYSTEM_UI_FLAG_LOW_PROFILE
qui assombrit également les boutons de navigation s’ils sont présents à l’écran.
Appliquez les éléments suivants dans votre thème pour l'activité dans 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>
Puis appliquez ce qui suit dans votre style dans 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>
Les réponses ci-dessus aideraient avec la chose ActionBar. Pour l'ajouter, utilisez le code suivant au cas où vous utiliseriez l'écran de démarrage: Utilisez ceci avant de définir l'affichage du contenu:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Juste pour clarifier, voici comment vous le faites:
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
Cela ferait de votre écran un plein écran, c’est-à-dire supprimer la barre du haut où vous voyez la barre de réseau, etc.
Cela fonctionne dans l'API 27
Dans le fichier styles.xml, remplacez le code par ce qui suit ....
<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>
Ensuite, dans les fichiers (par exemple, activity_list.xml) dans lesquels vous souhaitez qu'une barre d’outils place le code suivant.
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_height="wrap_content"
Android:layout_width="match_parent"
Android:background="@color/colorPrimary"/>
Si vous avez des problèmes, passez en présentation linéaire (car c’est ce sur quoi ce code est testé)
De ici :
À partir de Android 3.0 (API de niveau 11), toutes les activités utilisant le thème par défaut ont un ActionBar en tant que barre d’application. Toutefois, des fonctionnalités de barre d’application ont été progressivement ajoutées au ActionBar natif au fil des différentes versions de Android. Par conséquent, le ActionBar natif se comporte différemment selon la version du système Android qu'un périphérique peut utiliser . En revanche, les fonctionnalités les plus récentes sont ajoutées à la version de Toolbar de la bibliothèque de support et sont disponibles sur tout périphérique pouvant utiliser cette bibliothèque.
Une option consiste donc à désactiver complètement ActionBar (dans le fichier app manifest.xml), puis à ajouter la barre d’outils dans chaque page nécessitant un ActionBar.
(suivez le lien ci-dessus pour une explication étape par étape)
Remplacer AndroidManifest.xml
Android:theme="@style/FullscreenTheme"
à
Android:theme="@style/Theme.Design.NoActionBar"