Dans l'application Android, la méthode Toolbar.setTitle n'a aucun effet - le nom de l'application est affiché comme titre

298

J'essaie de créer une application simple en utilisant la bibliothèque android-support-v7: 21. Extraits de

code:
MainActivity.java

public class MainActivity extends ActionBarActivity {

    Toolbar mActionBarToolbar;

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

        mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);            
        mActionBarToolbar.setTitle("My title");
        setSupportActionBar(mActionBarToolbar);
}

activity_main.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar            
        android:id="@+id/toolbar_actionbar"
        android:background="@null"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        android:fitsSystemWindows="true" />

</LinearLayout>

Mais au lieu de "Mon titre" dans la barre d'outils,% nom de l'application% est affiché.
On dirait que la setTitleméthode n'a aucun effet.
Je voudrais montrer "Mon titre".

UPD: Avant, styles.xmlétait:

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="windowActionBar">false</item>
</style>

J'ai donc pensé que la barre d'action n'était pas utilisée. J'ajoute NoActionBarau style parent:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="windowActionBar">false</item>
</style>

Mais le problème n'est pas résolu.

Krossovochkin
la source
4
FWIW, je suis au niveau de l'API 22, et j'ai eu le même problème si j'appelais setTitle après avoir appelé setSupportActionBar, mais cela fonctionnait si j'appelais setTitle avant . Comme décrit dans une réponse ci-dessous, après avoir appelé setSupportActionBar, la barre d'actions prend possession de la barre d'outils et les appels directement sur la barre d'outils peuvent ne pas fonctionner. Je me rends compte que dans votre question que vous avez en fait setTitle d'appel avant setSupportActionBar, si c'est probablement quelque chose qui a changé récemment. Dans tous les cas, l'utilisation de getSupportActionBar (). SetTitle fonctionne aussi bien.
JHH
La même requête posée dans stackoverflow.com/questions/15560904/…
JoboFive
Essayez-le - "Comment définir un titre pour l'activité avec la barre d'outils?" link.medium.com/cGVg3zVr0Z
Werder

Réponses:

560

Trouvé la solution:

Au lieu de:

mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);            
mActionBarToolbar.setTitle("My title");
setSupportActionBar(mActionBarToolbar);

J'ai utilisé:

mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);            
setSupportActionBar(mActionBarToolbar);
getSupportActionBar().setTitle("My title");

Et il fonctionne.

Krossovochkin
la source
27
gentil, mais cela n'a aucun sens de travailler de cette façon et pas de l'autre .... bienvenue sur android 101
DoruChidean
28
getSupportActionBar().setTitle("My title");peut produire 'java.lang.NullPointerException'
Pratik Butani
8
@PratikButani Tant que la barre d'outils a été définie comme setSupportActionBar () avant d'appeler getSupportActionBar (), pourquoi le serait-il?
Leon
3
Aha, facilement résolu: assert getSupportActionBar ()! = Null;
Leon
10
Les gars avez-vous vraiment voté @PratikButani autant de fois? Si vous utilisez un thème de style sans barre d'action mais une barre d'outils de support personnalisé v7 et que vous oubliez d'appeler setSupportActionBar(mToolbar), vous obtiendrez bien sûr une exception nulle, mais si vous l'avez appelé, ignorez simplement ce message. Il suffit de lire - developer.android.com/training/appbar/setting-up.html
user25
115

Pour toute personne qui doit configurer le titre via la barre d'outils quelque temps après avoir défini la barre SupportAction, lisez ceci.

L'implémentation interne de la bibliothèque de support vérifie simplement si la barre d'outils a un titre (non nul) au moment où le SupportActionBar est configuré. S'il y en a un, alors ce titre sera utilisé à la place du titre de la fenêtre. Vous pouvez ensuite définir un titre fictif pendant que vous chargez le vrai titre.

mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
mActionBarToolbar.setTitle("");
setSupportActionBar(mActionBarToolbar);

plus tard...

mActionBarToolbar.setTitle(title);
Sorianiv
la source
Cela fonctionne, mais pourquoi c'est ainsi que cela doit être fait n'a aucun sens pour moi. Quelqu'un at-il une explication de pourquoi cela fonctionne?
Maxwell
1
@Maxwell Il est logique compte tenu de la conception de l'interaction barre d'action / barre d'outils. L'activité doit afficher un titre.Si vous fournissez une barre d'outils sans ce titre, Android suppose que vous souhaitez le contrôle traditionnel du titre de l'activité.
Drew
1
mActionBarToolbar.setTitle (getResources (). getString (R.string.app_name)); s'assurera qu'il y a un bon titre par défaut tout en gardant le même effet magique de la réponse
Eslam Sameh Ahmed
@Bevor ça fonctionne, voyez combien de votes cette réponse a ... vous venez de faire quelque chose de mal
user25
@ user25, cela a également mal fonctionné pour moi, il a supprimé une flèche de retour. Ensuite, j'ai trouvé une autre solution: stackoverflow.com/a/40571324/2914140 . this.setTitle("Title"), où this- est une référence à une activité.
CoolMind
80

La réponse ci-dessus est totalement vraie mais ne fonctionne pas pour moi.

J'ai résolu mon problème avec les choses suivantes.

En fait, mon XML est comme ça:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/confirm_order_mail_layout"
    android:layout_width="match_parent"
    android:layout_height="fill_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/confirm_order_appbar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/confirm_order_list_collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|enterAlways">

            <android.support.v7.widget.Toolbar
                android:id="@+id/confirm_order_toolbar_layout"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:layout_scrollFlags="scroll|enterAlways"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

            </android.support.v7.widget.Toolbar>
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>

J'ai essayé toutes les options et après tout, je viens de les supprimer CollapsingToolbarLayoutcar je n'ai pas besoin de les utiliser dans ce cas particulier. XMLAinsi, mon XML final est comme:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/confirm_order_mail_layout"
    android:layout_width="match_parent"
    android:layout_height="fill_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/confirm_order_appbar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/confirm_order_toolbar_layout"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>

Maintenant, vous devez utiliser setTitle()comme la réponse ci-dessus:

mActionBarToolbar = (Toolbar) findViewById(R.id.confirm_order_toolbar_layout);            
setSupportActionBar(mActionBarToolbar);
getSupportActionBar().setTitle("My Title");

Maintenant , si vous souhaitez utiliser CollapsingToolbarLayoutet en Toolbarmême temps vous devez utiliser setTitle()desCollapsingToolbarLayout

CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.confirm_order_mail_layout);
collapsingToolbarLayout.setTitle("My Title");

Que cela vous aide. Je vous remercie.

Pratik Butani
la source
1
Cela a du sens, en supprimant le CollapsingToolbarLayoutproblème résolu
blueware
2
Pour moi, l'astuce avec le réglage du titre pour CollapsingToolbarLayout fonctionne. Merci beaucoup!
mysliwiec_tech
Puis-je changer le sous-titre avec CollapsingToolbarLayout?
nrofis
2
Étant donné que votre barre d'outils est imbriquée sous CollapsingToolbarLayout, elle est remplacée par la mise en page de la barre d'outils réduite. Cela fonctionne pour moi.
neilQ5
2
Bro tu me sauves la vie !!! Vous devez à la fois setSupportActionbar avant d'utiliser collapsingToolbarLayout.seTitle ("Title");
Jacky Chong
35

Vous pouvez simplement changer n'importe quel nom d'activité en utilisant

Acitivityname.this.setTitle("Title NAme");
roshan posakya
la source
1
Ou tout simplement title = "Title"en Kotlin ou peut-être this.setTitle("Title")en Java.
CoolMind
33

Essayez ceci, vous pouvez définir le titre directement en XML:

 <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:title="some title"
        app:popupTheme="@style/AppTheme.PopupOverlay">
Axrorxo'ja Yodgorov
la source
Le plus simple mais j'ai encore besoin de personnaliser les titres de manière dynamique, si vous avez une idée
aya salama
15

Pour définir le titre de chaque titre de fragment Navbar

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{
    myView = inflater.inflate(R.layout.second_layout, container, false);
    getActivity().setTitle("title");

    return myView;
}
roshan posakya
la source
12

Essayez ceci .. cette méthode fonctionne pour moi .. !! j'espère que cela peut aider quelqu'un .. !!

<android.support.v7.widget.Toolbar  
 xmlns:app="http://schemas.android.com/apk/res-auto"  
 android:id="@+id/my_awesome_toolbar"  
 android:layout_width="match_parent"  
 android:layout_height="wrap_content"  
 android:background="?attr/colorPrimary"  
 android:minHeight="?attr/actionBarSize"  
 app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" >  

<TextView  
   android:id="@+id/toolbar_title"  
   android:layout_width="wrap_content"  
   android:layout_height="wrap_content"  
   android:gravity="center"  
   android:singleLine="true"  
   android:text="Toolbar Title"  
   android:textColor="@android:color/white"  
   android:textSize="18sp"  
   android:textStyle="bold" />  

</android.support.v7.widget.Toolbar>  

Pour afficher le logo dans la barre d'outils, essayez l'extrait ci-dessous. // Set drawable

toolbar.setLogo(ContextCompat.getDrawable(context, R.drawable.logo));

Faites-moi savoir le résultat.

Ragu Swaminathan
la source
Merci Ragu Swaminathan .. J'essayais d'implémenter SupportActionBar à partir de l'activité appcompact pour donner un titre à mon activité mais incapable de le faire car j'ai besoin d'étendre BaseGameActivity. Ensuite, je vais pour la barre d'outils mais le titre ne s'affiche pas lors de l'exécution. Votre méthode utilisant la zone de texte dans la barre d'outils fonctionne. Recommandez-le aux personnes dans la même situation
Sarun1001
la barre d'outils a une méthode pour définir le logo de l'application. vérifier ma réponse mise à jour
Ragu Swaminathan
11
 getSupportActionBar().setTitle("Your Title");
Hanisha
la source
2
Cette réponse est un talon et devrait plutôt être un commentaire , car des réponses courtes comme celle-ci peuvent être considérées comme de faible qualité. Une fois que vous avez une réputation suffisante, vous pourrez commenter. Si vous n'avez pas assez de réputation, lisez cet article sur la façon de contribuer si vous n'avez pas encore assez de réputation.
ascripter le
@ascripter c'est une réponse
Jemshit Iskenderov
8

Veuillez consulter https://code.google.com/p/android/issues/detail?id=77763 . Apparemment, c'est censé fonctionner comme ça. Une fois que vous appelez l'appel de setSupportActionBar()méthode, il incombe au délégué ActionBar de router l'appel vers la vue correcte.

redDragonzz
la source
1
Qu'est-ce que ce délégué Actionbar? Ici, setTitle () ne fonctionne pas pour la barre d'outils ni pour la barre d'actions de support. La barre d'action native est désactivée dans le thème. Qu'est-ce qui ne va pas? Si seule la pièce jointe du code source fonctionnait dans Android Studio, je pourrais moi-même tracer le problème!
WindRider
6

J'ai essayé de renommer la barre d'outils du fragment

Cela m'a aidé, j'espère aider quelqu'un d'autre

Activity activity = this.getActivity();
Toolbar toolbar = (Toolbar) activity.findViewById(R.id.detail_toolbar);
        if (toolbar != null) {
            activity.setTitle("Title");
        }

//toolbar.setTitle("Title"); did not give the same results

Capture d'écran: entrez la description de l'image ici

Nikita G.
la source
6

Ce n'est pas seulement .setTitle

plusieurs méthodes de Support Toolbar (Appcompat v7) onCreatene fonctionnent qu'avec

getSupportActionBar().method()

et ne travaille pas avec mToolbar.method()

exemples:

getSupportActionBar().setTitle("toolbar title");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

bien que les méthodes suivantes fonctionne très bien sans getSupportActionBar()enonCreate

mToolbar.setVisibility(View.VISIBLE);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //
    }

Problème uniquement avec l' onCreateévénement, vous pouvez toujours l'utiliser mToolbar.setTitle()plus tard au lieu d'être ennuyeux getSupportActionBar().setTitle(), par exemple si vous ajoutez cela, onCreatecela fonctionnera (car il sera exécuté plus tard, après onCreate)

mHandler.post(new Runnable() {
    @Override
    public void run() {
        mToolbar.setTitle("toolbar title");
    }
});

Je préfère utiliser cette solution https://stackoverflow.com/a/35430590/4548520 que https://stackoverflow.com/a/26506858/4548520 car si vous changez plusieurs fois de titre (dans différentes fonctions) il est plus confortable à utiliser mToolbar.setTitle()qu'un plus long getSupportActionBar().setTitle()et vous ne voyez pas de notification ennuyeuse sur l'exception nulle comme avecgetSupportActionBar().setTitle()

user25
la source
si vous souhaitez modifier le titre plusieurs fois et en utilisant une barre d'outils repliable, cela vous aidera: stackoverflow.com/questions/26486730/…
user1506104
6

Pour toute personne qui a besoin de configurer le titre via la barre d'outils quelque temps après avoir défini le SupportActionBar (@sorianiv) ET votre Toolbarest à l'intérieur d'un CollapsingToolbarLayout, lisez ceci:

mToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout);
Toolbar toolbar = findViewById(R.id.toolbar);
//toolbar.setTitle(""); // no need to do this
//mToolbarLayout.setTitle("Title"); // if you need an initial title, do this instead
setSupportActionBar(toolbar);

Plus tard,

mToolbarLayout.setTitle("New Title");
user1506104
la source
5

Le titre de l'application ne s'affichera pas comme titre par défaut sur chaque activité, vous pouvez insérer un titre différent sur chaque activité. Sur votre fichier d'activité ci-dessous, onCreate suffit de coller une seule ligne pour définir le titre,

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("Your Title Here");

Modifiez simplement le texte "Votre titre ici" en votre texte.

Mohammad Shohag
la source
4

Utilisez-le simplement dans votre adaptateur, où MainActivity est votre AppCompactActivity. Appelez-le de n'importe où.

((MainActivity) context).getSupportActionBar().setTitle(titles.get(position));
Axay Coolmoco
la source
4

Je l'ai fait fonctionner en utilisant -

toolbar.post(new Runnable() {
            @Override
            public void run() {
                toolbar.setTitle("My Title");
            }
        });
Ankit Aggarwal
la source
1
Vous n'avez pas besoin d'utiliser postsi vous changez de titre dans le fil d'interface utilisateur, ce qui, je pense, représente 90% des cas.
Vadim Kotov
3

Si vous utilisez CollapsibleToolbarLayoutavec, Toolbarvous devrez définir le titre dans les deux mises en page

définir votre barre d'outils comme barre d'action dans la onCreateméthode

protected void setUpToolBar() {

    if (mToolbar != null) {
        ((HomeActivity) getActivity()).setSupportActionBar(mToolbar);
        mToolbar.setTitleTextColor(Color.WHITE);
        mToolbar.setTitle("List Detail");
        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getActivity()
                        .getSupportFragmentManager().popBackStack();
            }
        });
        ((HomeActivity) getActivity()).getSupportActionBar()
                .setDisplayHomeAsUpEnabled(true);
    }
}

Plus tard, mettez simplement à jour le titre de la barre d'outils en utilisant la setTitleméthode

 mToolbar .setTitle(productFromShoppingList.getProductName()); 
 mCollapsingToolbar.setTitle(productFromShoppingList.getProductName());
Hitesh Sahu
la source
Cette solution fonctionne si vous constatez que vous pouvez définir le titre une fois, mais ne pouvez pas le modifier par la suite. Assurez-vous de définir le titre de la barre d'outils de réduction.
Hylianpuffball
si vous voulez changer le titre après un certain temps avec la barre d'outils repliable, vous pouvez le faire: stackoverflow.com/questions/26486730/…
user1506104
2

Essaye ça:

Code Xml

<android.support.v7.widget.Toolbar
    android:layout_width="match_parent"
    android:layout_height="120dp"
    android:id="@+id/tool_bar"
    android:background="@color/tablayout"
    android:theme="@style/ToolBarStyle"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:layout_gravity="center"
        android:id="@+id/toolbar_title"
        android:textSize="18sp"
        android:textColor="@color/white"/>
    </android.support.v7.widget.Toolbar>

Code Java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toolbar = (Toolbar) findViewById(R.id.tool_bar);
    toolbar_text = (TextView)findViewById(R.id.toolbar_title);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    toolbar.setLogo(R.drawable.ic_toolbar);
}
Janakipathi Chowdary
la source
2

Si votre objectif est de définir une chaîne statique dans la barre d'outils, la façon la plus simple de le faire est de simplement définir l'étiquette d'activité dans AndroidManifest.xml:

<activity android:name=".xxxxActivity"
          android:label="@string/string_id" />

La barre d'outils obtiendra cette chaîne sans aucun code. (fonctionne pour moi avec les bibliothèques v27.)

Timores
la source
2

J'ai un comportement étrange qui peut vous aider.
Cela fonctionne mais cela n'a aucun effet dans onCreate uniquement:

toolbar.setTitle("title");

Essayez d'utiliser ceci dans onCreate:

yourActivityName.this.setTitle("title")
user2167877
la source
2

Pour changer le titre de chaque activité différente

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pizza);
    setTitle(getResources().getText(R.string.title));
}
roshan posakya
la source
setTitle (R.string.title); L'événement est plus facile, mais ne fonctionne pas
toshkinl
2
 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       //custom toolbaar
       getSupportActionBar().setTitle("Abhijeet");

    }
}
Abhi jeet
la source
1

Bien que cela ne soit pas immédiatement pertinent pour cette configuration particulière, j'ai trouvé que la suppression de "CollapsingToolbarLayout" de mon XML qui enveloppait ma barre d'outils à l'intérieur d'un AppBarLayout faisait tout fonctionner.

Donc ça:

      <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_height="?attr/actionBarSize"
                app:layout_scrollFlags="scroll|enterAlways"
                app:navigationIcon="@drawable/ic_arrow_back_white_24dp" />

        </android.support.design.widget.AppBarLayout>

Au lieu de cela:

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.CollapsingToolbarLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/collapsingToolbar"
                android:minHeight="?attr/actionBarSize"
                app:layout_scrollFlags="enterAlways|scroll|snap">

                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_height="?attr/actionBarSize"
                    app:navigationIcon="@drawable/ic_arrow_back_white_24dp" />
            </android.support.design.widget.CollapsingToolbarLayout>

        </android.support.design.widget.AppBarLayout>

Ensuite, j'ai défini le titre dans onCreate de l'activité, avant d'appeler setSupportActionBar ().

Chantell Osejo
la source
vous pourriez faire ça. si vous avez vraiment besoin de la disposition de la barre d'outils repliable, vérifiez ceci: stackoverflow.com/questions/26486730/…
user1506104
@Chantell Osejo, cela a fonctionné pour moi aussi, même si j'utilisais la même disposition. Merci
Paramjit Singh Rana
1

Cela peut être fait en définissant l' android:labelattribut de votre activité dans le AndroidManifest.xmlfichier:

<activity android:name="my activity"
 android:label="The Title I'd like to display" />

Et puis ajoutez cette ligne à onCreate ():

getSupportActionBar().setDisplayShowTitleEnabled(true);
A-Sharabiani
la source
0

Assurez-vous d'ajouter cette option:

getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE);
McLan
la source
0

La réponse se trouve dans la documentation (que vous pouvez trouver ici ):

Pour utiliser les méthodes de l'utilitaire ActionBar, appelez la méthode getSupportActionBar () de l'activité. Cette méthode renvoie une référence à un objet ActionBar compatible avec l'application. Une fois que vous avez cette référence, vous pouvez appeler l'une des méthodes ActionBar pour ajuster la barre d'application. Par exemple, pour masquer la barre d'application, appelez ActionBar.hide ().

C'est la solution que vous avez réellement trouvée. J'ai juste pensé à faire référence à la documentation officielle (que peu de gens ont apparemment tendance à lire).

Ely
la source
0

Dans Kotlin, vous pouvez le faire:

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar

class SettingsActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_settings)

        val toolbar = findViewById<Toolbar>(R.id.toolbar)
        setSupportActionBar(toolbar)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        supportActionBar?.setTitle(R.string.title)

    }

    override fun onSupportNavigateUp() = true.also { onBackPressed() }

}
MatPag
la source
-2

Cela se produit car vous utilisez à la fois la barre d'outils et la barre d'action. Maintenant que vous souhaitez utiliser la barre d'outils comme barre d'action, la première chose que vous devez faire est de désactiver la barre d'action fournie par le décor.

Le moyen le plus simple consiste à étendre votre thème Theme.AppCompat.NoActionBar.

Paresh Mayani
la source
Désolé, j'ai mal compris la question.
Haresh Chhelana
1
@HareshChhelana Vous avez posté une réponse mais savez-vous quel est le problème exactement?
Paresh Mayani
Je pense qui est lié au problème de tuile défini par la barre d'action que vous avez donné à de tels ans et quand vous me rendez compte, j'ai supprimé mes ans alors maintenant vous ne vous inquiétez pas pour mon frère incompris.
Haresh Chhelana
1
@PareshMayani merci pour votre réponse, mais cela ne résout pas mon problème. Veuillez vérifier la question mise à jour
krossovochkin