2015-06-15 32 views
8

Czy można ustawić logo paska narzędzi w języku xml? Próbowałem to do tej pory:Ustaw Logo paska narzędzi w języku 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

używam pasek jako actionbar w moim AppCompatActivity:

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

jestem w stanie ustawić logo z kodu:

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

Ale chciałbym ustawić logo albo z układu lub XML z XML Styl/rozrywki.

Odpowiedz

2

Aby wyświetlić ikonę logo, należy ustawić tę ikonę w czasie wykonywania w pasku akcji.

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

Jestem zainteresowany zrobieniem tego z XML (zarówno układu, jak i stylu). –

4

Właściwie można, ale nie będzie dobrze działać z nazwą na pasku narzędzi. Możesz po prostu umieścić ImageView w ciele Toolbar, tak jak robisz to w 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/> 

Lepiej jeśli będzie to zrobić z kodem:

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

Dzięki, ale chciałbym ustawić standardowe logo, nie wprowadzając niestandardowego potomka. –

6

zmieniają

app:logo="@drawable/my_logo" 

do

app:navigationIcon="@drawable/my_logo" 

UPDATE

Dodaj Linearlayout do paska narzędziowego 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

Nie jestem zainteresowany dostosowywaniem ikony nawigacji (przycisk "wstecz/w górę"), ale dostosowywaniem logo (które znajduje się po prawej stronie ikony nawigacji). –

+0

zobacz moją zaktualizowaną odpowiedź. –

+0

Dzięki, ale chciałbym ustawić standardowe logo, nie wprowadzając niestandardowego dziecka (dzieci). –

1

to może być odpowiedź:

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

w moim przypadku wynik wygląda tak:

Toolbar with Logo and Navigation

Jeśli z jakichś powodów logo nie pojawi się następnie spróbuj uruchomić nowy, świeży projekt, dodaj tylko layout_width, layout_height, id i logo. Pamiętaj, aby dodać pasek narzędzi w onCreate przez setActionBar lub setSupportActionBar. Pozdrawiam, P.

2

pomocą XML tylko

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

Teraz stosuje AppTheme.NoActionBar motyw do działania (i jeśli chcesz usunąć tytuł paska narzędzi użyć getSupportActionBar().setDisplayShowTitleEnabled (false); po setSupportActionBar (pasek narzędzi);)

<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

W kodzie umieścić getSupportActionBar() setLogo (R.drawable.icon.); To zadziała

Powiązane problemy