2015-06-15 8 views
8

Возможно ли установить логотип панели инструментов в xml? Я попытался это до сих пор:Установить логотип панели инструментов в XML

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

Я использую панель инструментов как ActionBar в моем AppCompatActivity:

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

Я могу установить логотип с кодом:

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

Но я хотел бы установить логотип либо из макета XML или стиль/Theme XML.

ответ

2

Чтобы отобразить значок логотипа, установите этот значок во время выполнения в ActionBar.

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

Я заинтересован в том, чтобы делать это из XML (либо макета, либо стиля). –

4

На самом деле вы можете, но это не будет хорошо работать с именем на Панели инструментов. Вы можете просто поместить ImageView в тело панели инструментов, как вы делаете это с помощью макета.

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

Лучше, если вы будете делать это из кода:

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

Спасибо, но я хотел бы установить стандартный логотип, а не вводить пользовательский ребенок. –

6

Меняются

app:logo="@drawable/my_logo" 

в

app:navigationIcon="@drawable/my_logo" 

UPDATE

Добавить Linearlayout в свой тег xml.

<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

Меня не интересует настройка значка навигации (кнопка «назад/вверх»), но при настройке логотипа (который находится справа от значка навигации). –

+0

см. Мой обновленный ответ. –

+0

Спасибо, но я бы хотел установить стандартный логотип, не введя пользовательский ребенок (ren). –

1

это может быть ответом:

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

В моем случае результат выглядит следующим образом:

Toolbar with Logo and Navigation

Если по каким-то причинам логотип не появляется, то попробуйте начать новый, свежий проект, добавьте только layout_width, layout_height, id и атрибуты логотипа. Не забудьте добавить панель инструментов в onCreate через setActionBar или setSupportActionBar. С уважением, П.

2

Использование 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> 

Теперь примените AppTheme.NoActionBar тему к вашей деятельности (и если вы хотите, чтобы удалить заголовок панели инструментов использовать getSupportActionBar().setDisplayShowTitleEnabled (ложь); после setSupportActionBar (панель инструментов);)

<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

В коде поместить getSupportActionBar() setLogo (R.drawable.icon). Это будет работать

Смежные вопросы