Est-il possible de définir le logo de la barre d'outils en XML? J'ai essayé jusqu'à présent:
1.
<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
...
Android:logo="@drawable/my_logo"
/>
2.
<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
...
app:logo="@drawable/my_logo"
/>
MODIFIER
J'utilise la barre d'outils comme barre d'action dans mon AppCompatActivity:
setSupportActionBar(findViewById(R.id.toolbar));
Je peux définir le logo à partir du code:
((Toolbar) findViewById(R.id.toolbar)).setLogo(R.drawable.my_logo);
Mais je souhaiterais définir le logo à partir du format XML ou du style/thème XML.
Faire le changement
app:logo="@drawable/my_logo"
à
app:navigationIcon="@drawable/my_logo"
METTRE &AGRAVE; JOUR
Ajoutez Linearlayout dans la balise XML de la barre d’outils.
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@color/grey">
<LinearLayout
Android:layout_width="match_parent"
Android:orientation="horizontal"
Android:layout_height="wrap_content">
<ImageView
Android:id="@+id/media_image"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:adjustViewBounds="true"
Android:contentDescription="new post image"
Android:scaleType="centerCrop"
Android:visibility="visible" />
<TextView
Android:id="@+id/toolbar_subtitle"
Android:textSize="14sp"
Android:layout_gravity="center"
Android:textColor="@color/black"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
</LinearLayout>
</Android.support.v7.widget.Toolbar>
En fait, vous le pouvez, mais cela ne fonctionnera pas bien avec name dans la barre d’outils. Vous pouvez simplement insérer ImageView dans le corps de la barre d’outils, comme vous le faites avec Layout.
<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto">
<ImageView
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
app:logo="@drawable/my_logo"/>
<Android.support.v7.widget.Toolbar/>
Mieux vaut le faire à partir du code:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.my_logo);
Pour afficher l'icône du logo, définissez cette icône au moment de l'exécution dans ActionBar.
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(@drawable/my_logo);
Utilisation de XML uniquement
<!-- 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="ActionbarLogo">
<item name="Android:logo">@drawable/ic_menu_camera</item>
<item name="Android:displayOptions">useLogo</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="Android:actionBarStyle">@style/ActionbarLogo</item>
<item name="windowNoTitle">true</item>
</style>
Maintenant, appliquez le thème AppTheme.NoActionBar à votre activité (et si vous souhaitez supprimer le titre de la barre d'outils, utilisez getSupportActionBar (). SetDisplayShowTitleEnabled (false); après setSupportActionBar (barre d'outils);)
<activity
Android:name=".MainActivity"
Android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action Android:name="Android.intent.action.MAIN"/>
<category Android:name="Android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
cela pourrait être la réponse:
<Toolbar
Android:layout_width="match_parent"
Android:layout_height="?android:attr/actionBarSize"
Android:id="@+id/atc_toolbar"
Android:background="?android:attr/colorPrimaryDark"
Android:elevation="4dp"
Android:navigationIcon="@Android:drawable/ic_menu_compass"
Android:logo="@Android:drawable/ic_menu_view"
Android:title="My application">
</Toolbar>
Dans mon cas, le résultat ressemble à ceci:
Barre d'outils avec logo et navigation
Si, pour certaines raisons, le logo ne s'affiche pas, essayez de démarrer un nouveau projet, ajoutez uniquement les attributs layout_width, layout_height, id et logo. N'oubliez pas d'ajouter la barre d'outils dans onCreate via setActionBar ou setSupportActionBar . Regards, P.
Dans votre code, entrez GetSupportActionBar (). SetLogo (R.drawable.icon); Cela fonctionnera