2015-10-12 4 views
0

Я использую панель инструментов вместо actionabar в своем приложении. Панель инструментов отлично работает, но проблема в том, что я хочу, чтобы логотип приложения отображался в центре панели инструментов. Изображение будет в центре, если никаких пунктов меню не отображаются на панели инструментов, но если я добавить поиск или обновить элемент меню на панель инструментов изображения также shifts.I хотят панель инструментов, чтобы быть в центре всегдаДобавить изображение в центр панели инструментов

Код

<android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar_home" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="@color/pink" 
       android:minHeight="56dp" 
       android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
       app:contentInsetEnd="0dp" 
       app:contentInsetStart="0dp"> 

       <RelativeLayout 
        android:id="@+id/rl_toolbar_main" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        > 


        <ImageView 
         android:id="@+id/tv_home_header" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_centerInParent="true" 
         android:src="@drawable/image" 
         android:drawablePadding="10dp" 
         /> 


       </RelativeLayout> 

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

Просто добавьте ваши детали вручную в относительной макете. нет необходимости использовать кнопки по умолчанию. Это так просто, и вы можете делать все с помощью панели инструментов. –

+0

Но мне нужен переполняющий поп –

+0

@ArchanaVetkar Если возможно, вы можете создать свое собственное меню переполнения. Это просто «диалог», содержащий «ListView». Возможно, вы могли бы сделать что-то лучше, если быть честным. – PPartisan

ответ

1

Вы не можете делать это из-за

Один или несколько пользовательских представлений. Приложение может добавлять произвольные дочерние представления на панель инструментов. Они появятся в этой позиции в макете. Если панель инструментов ChildView.LayoutParams показывает значение Gravity для CENTER_HORIZONTAL, представление будет пытаться центрировать в пределах доступного пространства, оставшегося на панели инструментов, после того, как будут измерены все остальные элементы.

-1

Добавить эти атрибуты в ImageView ...

 android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
+0

nah not working –

4

Использование растровой вытяжки с центром тяжести, как панель инструментов фон помогает создать нужный эффект. например,

Давайте предположим, что изображение, чтобы быть в центре является centeree.png, и что будет завернуто внутри вытяжки/toolbar_background.xml

<bitmap 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@android:drawable/centeree" 
    android:gravity="center" /> 

Вы можете назначить toolbar_background.xml как фон на панели инструментов в макете

<android.support.v7.widget.Toolbar 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="@drawable/toolbar_background"> 

Также в качестве альтернативы вы можете использовать 9 патчей с одинаковой растяжимой площадью с обеих сторон.

+0

Мне пришлось изменить «android: src =» @ android: drawable/centeree »для android: src =" @ drawable/centeree ", чтобы сделать эту работу. Умное решение, спасибо. – nmdias

0

Простой способ сделать это, хотя, вероятно, это не правильный способ сделать это.

Я установил правую боковую подкладку на ту же ширину, что и значок гамбургера. Тогда все остальное, что я хотел в моем dimens.xml. Может потребоваться корректировка, если вы добавляете элементы действия справа.

@ DIMEN/app_bar_padding_right = 72dp

 <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:paddingTop="@dimen/app_bar_padding" 
      android:paddingBottom="@dimen/app_bar_padding" 
      android:paddingLeft="@dimen/app_bar_padding" 
      android:paddingRight="@dimen/app_bar_padding_right" 
      android:src="@drawable/nav_bar_logo" 
      android:contentDescription="@string/app_name" /> 
Смежные вопросы