webentwicklung-frage-antwort-db.com.de

Legen Sie das Toolbar-Logo in XML fest

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

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

BEARBEITEN

Ich verwende die Symbolleiste als Aktionsleiste in meiner AppCompatActivity:

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

Ich kann das Logo aus dem Code setzen:

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

Aber ich möchte das Logo entweder aus Layout-XML oder aus Style/Theme-XML setzen.

10
Denis Kniazhev

Ändern Sie sich

app:logo="@drawable/my_logo"

zu

app:navigationIcon="@drawable/my_logo"

UPDATE

Fügen Sie Linearlayout Ihrem XML-Tag in der Symbolleiste 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>
9
Karan Maru

Eigentlich ist das möglich, aber es funktioniert nicht gut mit dem Namen in der Symbolleiste. Sie können ImageView einfach in den Körper der Symbolleiste einfügen, genau wie bei 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/>

Besser, wenn Sie dies aus dem Code heraus tun:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.my_logo);
5
tarasmorskyi

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

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(@drawable/my_logo);
2
strike

Nur mit XML

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

Wenden Sie nun das AppTheme.NoActionBar-Design auf Ihre Aktivität an (und wenn Sie den Titel der Symbolleiste entfernen möchten, verwenden Sie getSupportActionBar ().

<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

das könnte die Antwort sein:

    <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 sieht das Ergebnis so aus:

Symbolleiste mit Logo und Navigation

Wenn das Logo aus bestimmten Gründen nicht angezeigt wird, versuchen Sie, ein neues, neues Projekt zu starten. Fügen Sie nur die Attribute layout_width, layout_height, id und logo hinzu. Denken Sie daran, die Werkzeugleiste in onCreate über setActionBar oder setSupportActionBar . Hinzuzufügen. Mit freundlichen Grüßen P.

1
Patrycjusz

Fügen Sie in Ihrem Code GetSupportActionBar (). SetLogo (R.drawable.icon);

0
Preeti Sinha