web-dev-qa-db-fra.com

Définir le logo de la barre d'outils en XML

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.

10
Denis Kniazhev

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>
9
Karan Maru

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);
5
tarasmorskyi

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);
2
strike

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>
2
Hassan Tareq

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.

1
Patrycjusz

Dans votre code, entrez GetSupportActionBar (). SetLogo (R.drawable.icon); Cela fonctionnera

0
Preeti Sinha