web-dev-qa-db-de.com

symbol in Aktionsleiste/Symbolleiste mit AppCompat-v7 anzeigen 21

Ich habe diese ausprobiert - sehe aber immer noch nicht das Icon wie zuvor:

getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

Es scheint zu funktionieren, wenn ich eine benutzerdefinierte Symbolleiste verwende - aber das würde mich zwingen, alle Layouts zu berühren. Gibt es eine bessere Möglichkeit, dies zu tun?

124
ligi
getSupportActionBar().setDisplayShowHomeEnabled(true);

zusammen mit 

getSupportActionBar().setIcon(R.drawable.ic_launcher);
248
nadavfima

In modernen Android-Benutzeroberflächen sollten Entwickler sich eher auf ein visuelles Verhalten stützen anderes Farbschema für Symbolleisten als auf dem Anwendungssymbol. Das Von der Verwendung des Anwendungssymbols plus Titel als Standardlayout wird abgeraten auf API 21-Geräten und neuer.

Wenn Sie nicht einverstanden sind, können Sie Folgendes versuchen:

So erstellen Sie die Symbolleiste in XML:

<Android.support.v7.widget.Toolbar  
    Android:id="@+id/my_awesome_toolbar"
    Android:layout_height="wrap_content"
    Android:layout_width="match_parent"
    Android:minHeight="?attr/actionBarSize"
    Android:background="?attr/colorPrimary" />

In Ihrer Aktivität:

@Override
public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_layout);

    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    setSupportActionBar(toolbar);
}

Verwenden Sie die Methode setLogo () , um das Symbol . Quellcode festzulegen.

32
LordRaydenMK

Das hat für mich funktioniert:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDisplayUseLogoEnabled(true);
    getSupportActionBar().setLogo(R.drawable.ic_logo);
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional

ebenso gut wie:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setIcon(R.drawable.ic_logo); //also displays wide logo
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional
14
Michał K

einfachste Sache zu tun; einfach hinzufügen:

app:navigationIcon="@drawable/ic_action_navigation_menu">

zum <Android.support.v7.widget.Toolbar-Tag

dabei ist @drawable/ic_action_navigation_menu der Name des Symbols

14
Pila

Eine bessere Möglichkeit, mehrere Optionen festzulegen: 

Die setIcon/setLogo-Methode funktioniert nur, wenn Sie DisplayOptions gesetzt haben. Versuchen Sie Folgendes:

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setIcon(R.drawable.ic_launcher);

Sie können auch Optionen für die Anzeige von LOGO einstellen (fügen Sie einfach die Konstante ActionBar.DISPLAY_USE_LOGO hinzu). Weitere Informationen - displayOptions

12
Vintesh

Versuchen Sie es mit:

ActionBar ab = getSupportActionBar();
ab.setHomeButtonEnabled(true);
ab.setDisplayUseLogoEnabled(true);
ab.setLogo(R.drawable.ic_launcher);
6
Chris Banes

wenn Sie das Home- oder Back-Symbol (kein Logo oder statisches Symbol) festlegen möchten, können Sie dies verwenden

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 getSupportActionBar().setHomeAsUpIndicator( getResources().getDrawable(R.drawable.home) );
5
smoothumut
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

ODERErstellen Sie ein XML-Layout, und rufen Sie den tool_bar.xml auf. 

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:background="@color/colorPrimary"
    Android:theme="@style/ThemeOverlay.AppCompat.Dark"
    Android:elevation="4dp">

    <RelativeLayout
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal">

    <ImageButton
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:background="@color/colorPrimary"
        Android:src="@drawable/ic_action_search"/>

    </RelativeLayout>
</Android.support.v7.widget.Toolbar>

Fügen Sie nun in Ihrer Hauptaktivität diese Zeile hinzu

 <include
     Android:id="@+id/tool_bar"
     layout="@layout/tool_bar" />
4
Skitty

Versuche dies:

import Android.support.v7.app.ActionBar;
import Android.support.v7.app.AppCompatActivity;
...
    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayHomeAsUpEnabled(true);
    actionbar.setHomeAsUpIndicator(R.drawable.ic_launcher);

so your icon will be used for Home / back
or

import Android.support.v7.app.ActionBar;
import Android.support.v7.app.AppCompatActivity;
...
    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayShowHomeEnabled(true);
    actionbar.setIcon(R.drawable.ic_launcher);

für ein statisches Symbol

2
Odilon Cenamo

Für Actionbar:

getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);

Für die Symbolleiste:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
2
Peter Ivanov
toolbar.setLogo(resize(logo, (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._120sdp) + ""), (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._35sdp) + "")));


public Drawable resize(Drawable image, int width, int height)
{
    Bitmap b = ((BitmapDrawable) image).getBitmap();
    Bitmap bitmapResized = Bitmap.createScaledBitmap(b, width, height, false);
    return new BitmapDrawable(getResources(), bitmapResized);
}
1
Hardik Vasani

Wenn Sie Ihre Symbolleiste nicht mit setSupportActionBar als Aktionsleiste festlegen möchten, können Sie ein Logo neben Ihrem Navigationssymbol (wenn Sie beispielsweise eine Schaltfläche "Zurück" haben) folgendermaßen hinzufügen:

toolbar.setLogo();

oder in xml 

<Android.support.v7.widget.Toolbar 
    ....
    Android:logo="@drawable/logo"
    app:logo="@drawable/logo"/>

Und selbst wenn Sie einen Titel in der Symbolleiste festgelegt haben, wird der Titel weiterhin angezeigt.

Bsp: Der grüne Haken im Bild unten ist das Logo

 Toolbar with navigation icon, logo and title

1
Malek Hijazi

Versuche dies. Für mich hat es funktioniert

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayUseLogoEnabled(true);
0
Matteo

In Kotlin habe ich Folgendes getan, um nur das Symbol anzuzeigen:

supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(R.drawable.ic_icon_small)
0
Leon

In Xamarin.Android können Sie diese verwenden:

SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayShowHomeEnabled(true);
SupportActionBar.SetDisplayUseLogoEnabled(true);
SupportActionBar.SetIcon(Resource.Drawable.ic_launcher);
SupportActionBar.SetDisplayShowTitleEnabled(false);

verwenden von Android.Support.V7.App.AppCompatActivity ist erforderlich.

0
Daniele D.