37

Ho aggiunto android.support.v7.widget.Toolbar nella mia app utilizzando il seguente codice, ora voglio mostrare un pulsante nella parte destra della barra degli strumenti, ma non in grado di farlo.Android v7 Allineamento dei pulsanti della barra degli strumenti

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/accent_color" 
    android:minHeight="?attr/actionBarSize" 
    android:layout_alignParentTop="true" 
    tools:context=".MyActivity" 
    android:theme="@style/ThemeOverlay.AppCompat.ActionBar"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/showevents" 
     android:textSize="12sp" 
     android:background="@null" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:textColor="@color/white" 
     android:text="UPCOMING \nEVENTS"/> 
</android.support.v7.widget.Toolbar> 

Ho aggiunto anche il sotto mostrato ma non viene spostato a destra.

android:layout_alignParentEnd="true" 
android:layout_alignParentRight="true" 

Immagine allegata per riferimento:

enter image description here

risposta

94

Si dovrebbe aggiungere android:layout_gravity="right" per il vostro Button:

 <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:id="@+id/showevents" 
     android:textSize="12sp" 
     android:background="@null" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:textColor="#FFF" 
     android:text="UPCOMING \nEVENTS"/> 

enter image description here

+0

Meglio impostare lo stile del pulsante per 'style = "@ stile/Widget.AppCompat.Button.Borderless"' o usare 'background =" android:? Attr/selectableItemBackground "" invece di uno sfondo @null per avere un effetto a catena quando viene toccato, altrimenti il ​​pulsante sembra disabilitato. – Roel

+1

Suggerimento: 'android: textAllCaps =" true "' potrebbe essere usato invece di scrivere tutto maiuscolo 'android: text'. I pulsanti a tema materiale lo includono automaticamente, ma su dispositivi precedenti è normale avere pulsanti non maiuscoli. – TWiStErRob

+1

@Roel, '? SelectableItemBackgroundBorderless' per averli entrambi. – WindRider

5

O per immagine in alto a destra:

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:minHeight="?attr/actionBarSize" 
    android:background="@color/colorPrimary" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:title="Edit Note"> 
    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:id="@+id/submitEditNote" 
     android:src="@android:drawable/ic_menu_send" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" /> 
</android.support.v7.widget.Toolbar> 

Spero che aiuta

0

Il tuo modo è giusto, ma un'occhiata a doc ufficiale: (Resourcs)

menu di elementi Creare:

<!-- "Mark Favorite", should appear as action button if possible --> 
<item 
    android:id="@+id/action_favorite" 
    android:icon="@drawable/ic_favorite_black_48dp" 
    android:title="@string/action_favorite" 
    app:showAsAction="ifRoom"/> 

<!-- Settings, should always be in the overflow --> 
<item android:id="@+id/action_settings" 
     android:title="@string/action_settings" 
     app:showAsAction="never"/> 

Aggiungi azione menu ID

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_settings: 
      // User chose the "Settings" item, show the app settings UI... 
      return true; 

     case R.id.action_favorite: 
      // User chose the "Favorite" action, mark the current item 
      // as a favorite... 
      return true; 

     default: 
      // If we got here, the user's action was not recognized. 
      // Invoke the superclass to handle it. 
      return super.onOptionsItemSelected(item); 

    } 
}