2015-11-12 3 views
2

Я пытаюсь сосредоточить свое ToolBar название:название ToolBar не центр

<android.support.design.widget.AppBarLayout 
    android:id="@+id/top_app_bar_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

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

     <TextView 
      android:id="@+id/toolbar_title" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:text="LOGO" 
      android:textColor="@color/colorAccent" 
      android:textSize="32sp" 
      android:textStyle="bold" 
      tools:ignore="HardcodedText" /> 

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

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

ToolBar совмещен это название осталось по умолчанию. Чтобы выровнять центр заголовка, я добавил TextView внутри панели инструментов. Но это не совсем точно. Я попытался дать отрицательный запас слева, но он не сработал.

enter image description here Как я могу это сделать?

ответ

6

У меня была аналогичная проблема, я не могу вспомнить, где я нашел ответ, но на панели инструментов по умолчанию установлена ​​вставка 16dp. Вам нужно удалить это, чтобы центрировать логотип.

app:contentInsetStart="0dp" 

Убедитесь, что вы используете пространство имен app.

Так макет панель будет выглядеть следующим образом:

<android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:paddingLeft="0dp" 
      android:paddingRight="0dp" 
      android:layout_width="match_parent" 
      app:contentInsetStart="0dp" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary"> 

      <TextView 
        android:id="@+id/toolbar_title" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:gravity="center" 
        android:text="LOGO" 
        android:textColor="@color/colorAccent" 
        android:textSize="32sp" 
        android:textStyle="bold" 
        tools:ignore="HardcodedText" /> 

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

UPDATE

Установка contentInsetStart в "0dp" тоже не работает для меня. Поэтому я попытался дать отрицательное дополнение (-48dp) до TextView, и это сработало.

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

    <TextView 
     android:id="@+id/toolbar_title" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center" 
     android:text="LOGO" 
     android:textColor="@color/colorAccent" 
     android:textSize="32sp" 
     android:textStyle="bold" 
     tools:ignore="HardcodedText" 
     android:paddingStart="-48dp" 
     android:paddingLeft="-48dp"/> 

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

Чтобы яснее ответить на этот вопрос, я хочу знать, почему был отредактирован этот ответ, чтобы иметь отрицательное дополнение. Вы получите странные результаты в разных версиях андроида с другим шрифтом, если используете отрицательное дополнение. «ContentInsetStart» работает для меня, и я нашел исходный источник от Chris Banes answer http://stackoverflow.com/a/26495926/2517849 – Naveed

+0

это работает для всех устройств одинаково ???? –

1

попробуйте wrap_content по ширине текста и установите layout_gravity в центр. Если он не центрирован, то отрицательная маргинальная дикая работа.

+0

Если вы используете содержимое упаковки, оно выравнивается влево. Вы не можете использовать гравитацию –

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