2015-06-15 12 views
8

Ist es möglich, das Logo der Toolbar in XML zu setzen? Ich habe dies bisher versucht:Toolbar-Logo in XML setzen

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" 
    /> 

EDIT

Ich verwende Symbolleiste als ActionBar in meinem AppCompatActivity:

setSupportActionBar(findViewById(R.id.toolbar)); 

Ich bin in der Lage Logo von Code zu setzen:

((Toolbar) findViewById(R.id.toolbar)).setLogo(R.drawable.my_logo); 

Aber ich mag Logo entweder vom Layout XML oder von Stil/Thema XML setzen.

Antwort

2

Um das Logo anzuzeigen, setzen Sie dieses Symbol zur Laufzeit in ActionBar.

getSupportActionBar().setDisplayShowHomeEnabled(true); 
getSupportActionBar().setIcon(@drawable/my_logo); 
+0

Ich bin daran interessiert, es von XML (Layout oder Stil) zu tun. –

4

Eigentlich können Sie, aber es wird nicht gut mit Name auf Toolbar funktionieren. Sie können ImageView einfach in den Werkzeugkasten von Toolbar einfügen, wie Sie dies mit Layout tun.

<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/> 

besser, wenn Sie diese aus dem Code tun:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 
toolbar.setNavigationIcon(R.drawable.my_logo); 
+0

Danke, aber ich würde gerne Standard-Logo setzen, keine Einführung eines benutzerdefinierten Kindes. –

6

Do ändern

app:logo="@drawable/my_logo" 

zu

app:navigationIcon="@drawable/my_logo" 

UPDATE

Fügen Sie Linearlayout in Ihrem Symbolleisten-XML-Tag hinzu.

<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> 
+0

Ich bin nicht daran interessiert, das Navigationssymbol anzupassen ("Zurück/Hoch-Taste"), sondern das Logo (das sich rechts vom Navigationssymbol befindet) anzupassen. –

+0

siehe meine aktualisierte Antwort. –

+0

Danke, aber ich würde gerne Standard-Logo setzen, keine benutzerdefinierten Kind (ren) einzuführen. –

1

dies die Antwort sein könnte:

<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> 

In meinem Fall Ergebnis sieht wie folgt aus:

Toolbar with Logo and Navigation

Wenn aus irgendwelchen Gründen Logo nicht erscheint dann versuchen, zu starten ein neues, neues Projekt, nur die Attribute layout_width, layout_height, id und logo hinzufügen. Denken Sie daran, die Symbolleiste in onCreate über setActionBar oder setSupportActionBar hinzuzufügen. Grüße, P.

2

Verwendung von XML nur

<!-- 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> 

Jetzt AppTheme.NoActionBar Thema auf Ihre Tätigkeit gelten (und wenn Sie möchten Symbolleiste Titel entfernen getSupportActionBar() verwenden.setDisplayShowTitleEnabled (false); nach setSupportActionBar (Toolbar);)

<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> 
1

In Ihrem Code setzen getSupportActionBar() setLogo (R.drawable.icon). Es wird funktionieren

Verwandte Themen