tela - toolbar em android




Imagem da barra de ferramentas centralizada (6)

Usando a última barra de ferramentas android.support.v7.widget.Toolbar Quero centralizar uma imagem na barra de ferramentas, mas ela fica à esquerda.

A melhor maneira para mim seria usar o método toolbar.setLogo() e centralizar o logotipo, mas não vejo nenhuma maneira de fazê-lo.

Eu uso um layout para a Toolbar :

  <android.support.v7.widget.Toolbar style="@style/ToolBarStyle"
                                   xmlns:android="http://schemas.android.com/apk/res/android"
                                   android:layout_width="match_parent"
                                   android:layout_height="wrap_content"
                                   android:background="?attr/colorPrimary"
                                   android:minHeight="@dimen/abc_action_bar_default_height_material">

</android.support.v7.widget.Toolbar>

Existe a possibilidade de adicionar uma imagem (logotipo) à barra de ferramentas e centralizá-la? programaticamente ou no layout?


A barra de ferramentas é apenas um grupo de visualização, você pode personalizar o quanto quiser.

Tente o seguinte:

<android.support.v7.widget.Toolbar
   style="@style/ToolBarStyle"
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:background="?attr/colorPrimary"
   android:minHeight="@dimen/abc_action_bar_default_height_material">

    <ImageView
        android:layout_width="wrap_content"
        android:contentDescription="@string/logo"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/ic_launcher"/>

 </android.support.v7.widget.Toolbar>

Isso deve colocar o seu imageView no centro da barra de ferramentas.


Essa não é a melhor solução, mas é uma solução alternativa que funciona mesmo quando você tem um botão ou item de menu ativado.

experimentar

<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    <android.support.v7.widget.Toolbar
       style="@style/ToolBarStyle"
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="?attr/colorPrimary"
       android:minHeight="@dimen/abc_action_bar_default_height_material"/>

    <ImageView
        android:layout_width="wrap_content"
        android:contentDescription="@string/logo"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/ic_launcher"/>

</FrameLayout>

Gosto da abordagem dada pela resposta de Ruben Yoo devido à sua simplicidade . É explícito, fácil de seguir e mantém todas as alterações de código juntas.

Aqui está uma versão atualizada com algumas pequenas melhorias:

<android.support.design.widget.AppBarLayout
    android:id="@+id/layout_app_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize">
        </android.support.v7.widget.Toolbar>

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:contentDescription="@string/app_name"
            android:scaleType="centerInside"
            android:src="@mipmap/ic_launcher"/>
    </FrameLayout>

</android.support.design.widget.AppBarLayout>

Alterar:

  1. introduziu o pai AppBarLayout
  2. tamanho explícito ?attr/actionBarSize fornecido ao quadro e à barra de ferramentas
  3. ImageView corresponde às dimensões principais em largura e altura
  4. redimensionado para o centerInside

Se o usuário definir:

activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); activity.getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_iconmenu);

e depois fazer algo como

<Toolbar ... >
   <ImageView ...>
   </ImageView>
</Toolbar>

a imagem dentro da barra de ferramentas não será centralizada, pois o botão home consumirá algum espaço do layout. O centro horizontal da imagem será inclinado na largura do ícone home.Então, a melhor solução:
1.Crie 9-patch png a partir do seu recurso .png da imagem original.
2.Crie drawable a partir do 9-patch com xml usando a layer-list como exemplo toolbar_background.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@color/white"/><!-- fill color under image(optional) -->
    <item>
        <nine-patch
        android:src="@drawable/toolbar_image" />
    </item>
</layer-list>


Em seguida, defina o recurso toolbar_background como plano de fundo no elemento Barra de ferramentas:

<Toolbar android:background="toolbar_background" ...>
</Toolbar>


Isso é tudo.


Se você tiver visualizações e não conseguir obter o logotipo centralizado, será porque a centralização é baseada no espaço restante, não na barra de ferramentas inteira.

Para garantir que o logotipo seja centralizado, tente usar uma lista de camadas como plano de fundo da barra de ferramentas em vez de tentar usar uma imagem como vista.

toolbar.xml

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@drawable/toolbar_background"
    android:theme="@style/ThemeOverlay.AppCompat.Dark"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:layout_scrollFlags="scroll|enterAlways"
    app:layout_collapseMode="pin">
</android.support.v7.widget.Toolbar>

toolbar_background.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape android:shape="rectangle">
      <solid android:color="@color/colorPrimary" />
    </shape>
  </item>
  <item>
    <bitmap android:src="@drawable/logo" android:gravity="center" />
  </item>
</layer-list>

Isso deve garantir um logotipo centralizado, com uma cor de fundo específica.


você pode usar este código:

     <android.support.v7.widget.Toolbar

        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"

        android:background="?attr/colorPrimary"

        app:popupTheme="@style/AppTheme.PopupOverlay">


        <ImageView
            android:layout_width="250dp"
            android:layout_height="match_parent"
            android:src="@drawable/apptitle"/>




android-toolbar