2015-08-22 29 views
12

Come centrare il titolo di un'attività nella barra degli strumenti in modo che funzioni anche con il pulsante Indietro della barra degli strumenti visualizzato?Come centrare il titolo in una barra degli strumenti (anche con il pulsante indietro della barra degli strumenti visualizzato)

Attualmente, la soluzione migliore che ho trovato è di avere un margine di 60 dpi se viene visualizzato il pulsante Indietro.

+0

penso che sarà necessario creare una visualizzazione personalizzata per la vostra barra delle operazioni. –

+0

Ho provato ad aggiungere una vista testuale nella vista della barra degli strumenti usando layout_gravity impostato al centro. Non funziona quando viene visualizzato il pulsante Indietro della barra degli strumenti. –

+0

È possibile creare una vista personalizzata (layout lineare orizzontale contenente un pulsante (posteriore) e una vista testo (titolo)) e centrarli. –

risposta

2

Non so come sia la procedura migliore, ma è possibile provare questa soluzione alternativa utilizzando il pulsante Indietro personalizzato all'interno della barra degli strumenti. Il codice di layout:

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:contentInsetLeft="0dp" 
    app:contentInsetStart="0dp"> 

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

     <ImageView 
      android:id="@+id/toolbar_back_button" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="20dp" 
      android:src="@drawable/ic_back" /> 

     <TextView 
      android:id="@+id/toolbar_title" 
      style="@style/TextAppearance.Widget.AppCompat.Toolbar.Title" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" /> 

    </RelativeLayout> 

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

e il codice in attività:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    TextView toolbarTitle = (TextView) findViewById(R.id.toolbar_title); 
    setSupportActionBar(toolbar); 

    ImageView backButton = (ImageView) findViewById(R.id.toolbar_back_button); 
    backButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      finish(); 
     } 
    }); 
4

Quando si utilizza solo il pulsante di nuovo, questo ha funzionato per me. in XML:

<android.support.v7.widget.Toolbar 
    android:id="@+id/tb_title_container" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/white"> 

    <TextView 
     android:id="@+id/tv_title" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center" 
     android:textAllCaps="true" 
     android:textColor="#2B2B2B" 
     android:textSize="14sp" /> 

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

Nel codice Java:

int contentInsetStartWithNavigation = mTitleContainer.getContentInsetStartWithNavigation(); 
mTitleContainer.setContentInsetsRelative(0, contentInsetStartWithNavigation); 
+0

Posso confermare che funziona benissimo. – Travis

Problemi correlati