2015-11-25 29 views
11

sto cercando di raggiungere questo obiettivo (un timer in toolbar con sfondo rosso):Aggiungi visualizzazione personalizzata alla destra della barra degli strumenti

A timer in the toolbar along with red background

Sto cercando di aggiungere customView in toolbar. Finisce sempre con l'estrema sinistra proprio accanto alla freccia indietro. Come il testo YP nell'immagine qui sotto è un custom Textview aggiunto alla barra degli strumenti. enter image description here.

Il codice per toolbar:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    android:id="@+id/base_activity_toolbar" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:elevation="4dp" 
    android:minHeight="?attr/actionBarSize" 
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> 

Il codice per aggiungere il layout:

LayoutInflater mInflater= LayoutInflater.from(context); 
    View mCustomView = mInflater.inflate(R.layout.textview, null); 
    toolbar.addView(mCustomView); 

Questo è il layout sto aggiungendo in questo momento per i test:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="horizontal" 
       android:layout_width="wrap_content" 
       android:gravity="end" 
       android:layout_height="wrap_content"> 
    <TextView android:layout_width="wrap_content" 
       android:text="yp" 
       android:layout_height="wrap_content"/> 
</LinearLayout> 

I mi manca qualcosa in modo più importante, non riuscivo a capirlo. Tirando fuori i miei capelli

+0

Modifica 'layout_width' del LinearLayout a' match_parent'. –

risposta

16

È possibile aggiungere ViewGroups all'interno Toolbar

  <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/toolbar_height" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

      <RelativeLayout.... 

      </RelativeLayout> 

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

Quando faccio qualcosa di simile, però, vedo il TextView che ho aggiunto ma non mostra più il titolo della barra degli strumenti. Qualche idea del perché? – AdamMc331

+0

Hai specificato 'getSupportActionBar(). SetDisplayShowTitleEnabled (false);'? o potrebbe essere il 'TextView' sovrapposto al titolo della barra degli strumenti. –

+0

Sì perché il 'RelativeLayout' viene aggiunto alla sinistra del titolo della barra degli strumenti. Specialmente se aggiungi 'alignParentRight =" true "', spinge il titolo fuori dalla vista.Ho aggiunto un'altra risposta per risolvere questo problema, un commento con tutto quel codice sarebbe troppo lungo. –

0

fare un tentativo. cambiare R.layout.textview a

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

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="TV" 
        android:id="@+id/textView2" 
        android:layout_centerVertical="true" 
        android:layout_alignParentRight="true" 
        android:layout_alignParentEnd="true" /> 
      </RelativeLayout> 
7

risposte dato lavoro, ma se si desidera impostare un titolo per la barra degli strumenti (molto probabilmente si vuole), quindi l'aggiunta di a RelativeLayout spinge il titolo fuori dalla vista a destra. In questo caso è necessario disabilitare il titolo della barra degli strumenti impostando getSupportActionBar().setDisplayShowTitleEnabled(false) e aggiungere un TextView personalizzato accanto all'altra vista che si desidera aggiungere alla barra degli strumenti. Così ad esempio è necessario aggiungere un ImageView in questo modo:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    android:id="@+id/base_activity_toolbar" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:elevation="4dp" 
    android:minHeight="?attr/actionBarSize" 
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

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

     <TextView 
      android:id="@+id/custom_toolbar_title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerVertical="true" 
      style="@style/ActionBarTitle"/> 

     <ImageView 
      android:layout_width="20dp" 
      android:layout_height="20dp" 
      android:scaleType="centerCrop" 
      android:adjustViewBounds="true" 
      android:layout_centerVertical="true" 
      android:layout_toRightOf="@id/custom_toolbar_title" 
      android:src="@drawable/arrow"/> 

    </RelativeLayout> 

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

funziona bene, per coloro che hanno bisogno di 'style =" @ style/ActionBarTitle "' c'è 'style =" @ style/TextAppearance.AppCompat.Widget.ActionBar.Title "' –

2

Proprio avuto lo stesso problema, ma ho trovato un semplice (a mio modesto parere) soluzione.

È possibile modificare leggermente il codice da:

LayoutInflater mInflater= LayoutInflater.from(context); 
View mCustomView = mInflater.inflate(R.layout.textview, null); 
toolbar.addView(mCustomView); 

A:

LayoutInflater mInflater= LayoutInflater.from(context); 
View mCustomView = mInflater.inflate(R.layout.textview, null); 
toolbar.addView(mCustomView, new Toolbar.LayoutParams(Gravity.RIGHT)); 

La vista viene poi aggiunto con la gravità impostato a destra!

5

ho appena impostato layout_gravity al right e ha funzionato

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="0dp" 
    android:layout_height="?android:actionBarSize" 
    app:title="NEW REQUESTS" 
    > 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="blahblah" 
     android:layout_gravity="right" 
     /> 
    </android.support.v7.widget.Toolbar> 
+0

Non ci posso credere, questo ha funzionato davvero! COME. non dà layout_gravity come opzione per TextView all'interno di una barra degli strumenti, quindi non l'ho provato. – Anarchofascist

Problemi correlati