J'essaie de créer une application simple à l'aide de 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" sur la barre d'outils% nom de l'application% est affiché.
On dirait que la méthode setTitle
n'a aucun effet.
Je voudrais montrer "Mon titre".
PD: Avant, styles.xml
était:
<style name="AppTheme" parent="Theme.AppCompat">
<item name="windowActionBar">false</item>
</style>
Alors, je pensais que la barre d’action n’est pas utilisée. J'ajoute NoActionBar
au style parent:
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
</style>
Mais le problème n'est pas résolu.
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.
Lisez ce qui suit pour tous ceux qui doivent configurer le titre via la barre d’outils après le paramétrage de SupportActionBar.
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é. Si tel est le cas, ce titre sera utilisé à la place du titre de la fenêtre. Vous pouvez ensuite définir un titre factice pendant que vous chargez le titre réel.
mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
mActionBarToolbar.setTitle("");
setSupportActionBar(mActionBarToolbar);
plus tard...
mActionBarToolbar.setTitle(title);
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 retirer CollapsingToolbarLayout
parce que je n'ai pas besoin de l'utiliser dans ce XML
Donc, 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>
Vous devez maintenant utiliser setTitle()
comme ci-dessus pour répondre:
mActionBarToolbar = (Toolbar) findViewById(R.id.confirm_order_toolbar_layout);
setSupportActionBar(mActionBarToolbar);
getSupportActionBar().setTitle("My Title");
Maintenant, si vous voulez utiliser CollapsingToolbarLayout
et Toolbar
alors vous devez utiliser setTitle()
sur CollapsingToolbarLayout
CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.confirm_order_mail_layout);
collapsingToolbarLayout.setTitle("My Title");
Puisse-t-il vous aider. Je vous remercie.
Vous pouvez simplement changer n'importe quel nom d'activité en utilisant
Acitivityname.this.setTitle("Title NAme");
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">
Pour définir le titre de chaque titre de fragment de la barre de navigation
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
myView = inflater.inflate(R.layout.second_layout, container, false);
getActivity().setTitle("title");
return myView;
}
Essayez ceci .. cette méthode fonctionne pour moi .. !! J'espère que ça 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));
Laissez-moi savoir le résultat.
getSupportActionBar().setTitle("Your Title");
Veuillez consulter https://code.google.com/p/Android/issues/detail?id=7776 . Apparemment, cela est supposé fonctionner comme ça. Une fois que vous avez appelé la méthode setSupportActionBar()
, il incombe au délégué ActionBar d’acheminer l’appel vers la vue correcte.
Il ne s'agit pas que de .setTitle
plusieurs méthodes de Support Toolbar (Appcompat v7) dans onCreate
ne fonctionne qu'avec
getSupportActionBar().method()
et ne fonctionne pas avec mToolbar.method()
exemples:
getSupportActionBar().setTitle("toolbar title");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
bien que les méthodes suivantes fonctionnent correctement sans getSupportActionBar()
dans onCreate
mToolbar.setVisibility(View.VISIBLE);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//
}
Problème uniquement avec l’événement onCreate
, vous pouvez toujours utiliser mToolbar.setTitle()
ultérieurement au lieu d’ennuyeux getSupportActionBar().setTitle()
, par exemple si vous ajoutez ceci dans onCreate
cela fonctionnera (car il sera exécuté ultérieurement, 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/454852 que https://stackoverflow.com/a/26506858/454852 car si vous changez de titre plusieurs fois (dans différentes fonctions), il est plus confortable d'utiliser mToolbar.setTitle()
qu'un plus long getSupportActionBar().setTitle()
et vous ne voyez pas de notification gênante à propos d'une exception nulle comme avec getSupportActionBar().setTitle()
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
Je l'ai fait fonctionner en utilisant -
toolbar.post(new Runnable() {
@Override
public void run() {
toolbar.setTitle("My Title");
}
});
Utilisez simplement ceci dans votre adaptateur, où MainActivity est votre AppCompactActivity. Appelez-le de n'importe où.
((MainActivity) context).getSupportActionBar().setTitle(titles.get(position));
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")
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);
}
Si vous utilisez CollapsibleToolbarLayout
avec Toolbar
, vous devrez définir le titre dans les deux présentations
définir votre barre d'outils comme barre d'action dans la méthode onCreate
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 méthode setTitle
mToolbar .setTitle(productFromShoppingList.getProductName()); mCollapsingToolbar.setTitle(productFromShoppingList.getProductName());
Pour changer le titre de chaque activité
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pizza);
setTitle(getResources().getText(R.string.title));
}
Si votre objectif est de définir une chaîne statique dans la barre d'outils, le moyen le plus simple consiste à définir simplement le libellé de l'activité dans AndroidManifest.xml:
<activity Android:name=".xxxxActivity"
Android:label="@string/string_id" />
La barre d'outils obtiendra cette chaîne sans code. (fonctionne pour moi avec les bibliothèques v27.)
Pour tous ceux qui ont besoin de configurer le titre via la barre d'outils un certain temps après le réglage de SupportActionBar (@sorianiv) ET votre Toolbar
se trouve dans 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);
Puis plus tard
mToolbarLayout.setTitle("New Title");
Cela peut être fait en définissant l'attribut Android:label
de votre activité dans le fichier AndroidManifest.xml
:
<activity Android:name="my activity"
Android:label="The Title I'd like to display" />
Et puis ajoutez cette ligne à la onCreate ():
getSupportActionBar().setDisplayShowTitleEnabled(true);
Bien que cela ne soit pas immédiatement pertinent pour cette configuration particulière, j'ai constaté que la suppression de "CollapsingToolbarLayout" de mon XML qui encapsulait ma barre d'outils dans un AppBarLayout permettait à tout de 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, je définis le titre dans onCreate de l'activité, avant que setSupportActionBar () soit appelée.
Assurez-vous d'ajouter cette option:
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE);
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 retourne une référence à un objet appcompat ActionBar. 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'applications, appelez ActionBar.hide ().
C'est la solution que vous avez réellement trouvée. Je viens de penser à donner une référence à la documentation officielle (que apparemment peu de gens ont tendance à lire).