2016-03-23 3 views
2

У меня есть панель инструментов внутри из AppBarLayout, как это:Невозможно установить название панели инструментов, которая находится внутри AppBarLayout

<android.support.design.widget.AppBarLayout 
     android:id="@+id/appBarLayout" 
     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:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay"> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:gravity="right" 
       android:orientation="horizontal"> 

       <ImageButton 
        android:id="@+id/editButton" 
        android:layout_width="40dp" 
        android:layout_height="40dp" 
        android:layout_gravity="center_vertical" 
        android:layout_marginRight="16dp" 
        android:scaleType="fitCenter" 
        android:background= 
         "?attr/selectableItemBackgroundBorderless" 
        android:contentDescription="Post" 
        android:src="@drawable/ic_mode_edit_24dp" 
        /> 

      </LinearLayout> 

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

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

В моей Activity.OnCreate() Я пытаюсь установить заголовок, как это:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 
getSupportActionBar().setTitle("Edit"); 

(не уверен, если это имеет значение, но ..) После этого я надуть фрагмент:

MyFragment fragment = new MyFragment(); 
fragment.setArguments(savedInstanceState); 

// Add fragment with tag 
getSupportFragmentManager().beginTransaction() 
    .add(R.id.content_frame, fragment, "my_frag") 
    .commit(); 

Однако, это не имеет никакого эфф ЭСТ. На самом деле, вообще нет названия. Это потому, что у меня есть LinearLayout внутри Toolbar или что-то в этом роде? Или из-за AppBarLayout?

+0

любая причина, по которой вам нужно иметь 'LinearLayout' в качестве дочернего элемента' Toolbar' вместо использования [menu] (http://developer.android .com/гид/темы/щ/menus.html)? – tachyonflux

ответ

6

вам нужно добавить TextView внутри ToolBar

EDIT: что-то вроде этого

<android.support.design.widget.AppBarLayout 
    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:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     android:contentInsetEnd="0dp" 
     android:contentInsetLeft="0dp" 
     android:contentInsetRight="0dp" 
     android:contentInsetStart="0dp" 
     android:elevation="2dp" 
     app:contentInsetEnd="0dp" 
     app:contentInsetLeft="0dp" 
     app:contentInsetRight="0dp" 
     app:contentInsetStart="0dp" 
     app:popupTheme="@style/AppTheme.PopupOverlay"> 

     <TextView 
      android:id="@+id/toolbar_title" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:text="@string/beermap" 
      android:textColor="@color/white" 
      android:textSize="22sp" 
      android:textStyle="bold" /> 

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

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

Есть ли что-нибудь особенное в TextView для добавления? Я имею в виду, что я хочу, чтобы он выглядел как стилизованный по умолчанию заголовок для действий. – Micro

+0

нет, это просто обычный TextView .. тогда вы можете стилизовать его так, как хотите, чтобы он выглядел как «обычный» заголовок –

+0

Я приму этот ответ, потому что он исправил мою проблему, но новая проблема заключается в том, как стиль что 'TextView' будет выглядеть так же, как« обычный »! – Micro

2

Вот как сделать TextView выглядеть так же, как по умолчанию:

<TextView 
      android:id="@+id/toolbar_title" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:text="@string/beermap" 
      android:textColor="@color/white" 
      android:textSize="20sp" 
      android:fontFamily="sans-serif-medium" /> 

Ключ часть составляет 20sp textize и android:fontFamily="sans-serif-medium"

2

Используйте getSupportActionBar().setTitle(getString(R.string.title)); в рамках своей деятельности. Это можно сделать в onCreate, если это необходимо сделать при изменении языкового стандарта.

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