2013-01-23 14 views
189

Sto provando a fare alcune cose su ActionBar in Android.Come cambio il titolo della barra delle azioni di Android e l'icona

Ho già aggiunto nuovi elementi nella parte destra della barra delle azioni.

Come posso modificare il lato sinistro della barra delle azioni? Voglio cambiare l'icona e il testo, e voglio aggiungere un "pulsante Indietro" nella barra delle operazioni per le altre schermate

Android Action Bar

risposta

456

Questo è molto semplice da realizzare

Se si desidera modificare nel codice , chiamare:

setTitle("My new title"); 
getActionBar().setIcon(R.drawable.my_icon); 

E impostare i valori in base alle proprie esigenze.

Oppure, nel file XML manifest di Android:

<activity android:name=".MyActivity" 
     android:icon="@drawable/my_icon" 
     android:label="My new title" /> 

Per attivare il pulsante indietro nel vostro uso app:

getActionBar().setHomeButtonEnabled(true); 
getActionBar().setDisplayHomeAsUpEnabled(true); 

Il codice dovrebbero essere tutti spostata nel onCreate modo che l'etichetta Il cambio dell'icona è trasparente per l'utente, ma in realtà può essere chiamato ovunque durante il ciclo di vita dell'attività.

+18

Se si utilizza la libreria di supporto per aggiungere la barra di azione, utilizzare 'getSupportActionBar' invece di' getActionBar'. –

+3

'getActionBar(). SetHomeButtonEnabled (true)' utilizza il livello API 14 o successivo, se si desidera semplicemente la funzionalità del pulsante indietro nelle API meno recenti o più recenti è necessario 'getActionBar(). SetDisplayHomeAsUpEnabled (true)' –

+2

getSupportActionBar(). setDisplayShowTitleEnabled (true); prima di setTitle ("123"); –

4

Per questo, è possibile farlo in 2 modi: XML o Giava. Vedi qui: How to change the text on the action bar

Quindi:

XML:

<activity android:name=".Hello_World" 
       android:label="This is the Hello World Application"> 
</activity> 

Java:

public class TitleBar extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

     setContentView(R.layout.main); 


     if (customTitleSupported) { 
      getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar); 
      } 

     final TextView myTitleText = (TextView) findViewById(R.id.myTitle); 
     if (myTitleText != null) { 
      myTitleText.setText("NEW TITLE"); 

      // user can also set color using "Color" and then "Color value constant" 
      // myTitleText.setBackgroundColor(Color.GREEN); 
     } 
} 
} 
+2

Per farlo dal codice, dovresti chiamare 'setTitle (CharSequence text)' o 'setTitle (int titleRes)'. Non utilizzare 'requestWindowFeature (Window.FEATURE_CUSTOM_TITLE)' a meno che non si preveda di sostituire l'intera barra del titolo con la propria Vista personalizzata. – Karakuri

5

È possibile modificare l'icona nella vostra con l'aggiunta di qualsiasi icona che si desidera vostre rispettive cartelle disegnabili, quindi modificando questa riga nel file AndroidManifest.xml:

android:icon="@drawable/ic_launcher" 

per abbinare qualunque sia il nome della vostra icona è lì dentro. O metti la tua icona come ic_launcher, se sono la stessa icona. Per quanto riguarda ciò che dice, aggiungi o cambia qualunque stringa corrisponde a quella nel tuo file res/values ​​/ strings.xml. Poi, ancora una volta nel file AndroidManifest.xml, modificare questa riga:

android:label="@string/app_name" 

a tutto ciò che la stringa che avete in loro. Dovrai farlo per l'applicazione nel suo complesso, e qualunque attività tu voglia, ma le linee sono le stesse.

Spero che questo aiuti.

+0

Che dimensione (dp) dovrebbe avere questo 'android: icon' nel tag di attività? – cuddlecheek

0

Il titolo della barra delle azioni, per impostazione predefinita, utilizza l'etichetta dell'attività corrente, ma è anche possibile impostarlo a livello di programmazione tramite ActionBar.setTitle().

Per implementare la funzionalità del pulsante "Indietro" (più precisamente, "Su") di cui si sta parlando, leggere la sezione "Utilizzo dell'icona dell'app per la navigazione" di Action Bar developer guide.

Infine, per cambiare l'icona, la guida copre anche quello. In breve, la barra delle azioni mostra l'immagine fornita in android:icon nell'elemento application o activity del manifest, se ce n'è uno. La pratica tipica consiste nel creare un'icona dell'applicazione (in tutte le varie densità necessarie) denominata ic_launcher.png e inserirla nelle directory drawable-*.

16

Per rendere utilizzabile un'unica icona da tutte le barre delle azioni, è possibile farlo nel manifesto Android.

<application 
    android:logo="@drawable/Image"> 

    ... 

</application> 
+1

grazie- Volevo un'icona diversa per l'esterno dell'app (come mostrato in "Tutte le app") e un'altra icona a sinistra della barra delle azioni. E questo ha funzionato. Il file manifest ha ancora Android: icon = "@ drawable/ic_launcher" – flobacca

+2

Questo è il modo corretto in quanto precarica l'icona, l'icona delle impostazioni programmatiche è lenta! –

8

Se si desidera cambiare il titolo barra di azione basta dare il seguente codice 1 riga nel onCreate() della vostra attività

getActionBar().setTitle("Test"); 
+0

Come posso animare questo cambio di titolo? –

0

ho ottenuto non-static method setTitle(CharSequence) cannot be referenced from a static context errore perché ho usato setTitle() in classe PlaceholderFragment statica . Ho risolto il problema utilizzando getActivity().getActionBar().setTitle("new title");

7

Hai solo bisogno di aggiungere queste 3 linee di codice. Sostituisci l'icona con la tua icona. Se si desidera generare icone utilizzare this

getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow); 
getActionBar().setHomeButtonEnabled(true); 
getActionBar().setDisplayHomeAsUpEnabled(true); 
2

Per set Titolo: getActionBar() setTitle ("Titolo");.

Per l'icona: getActionBar(). SetIcon (R.drawable.YOUR_ICON_NAME);

+1

O viceversa hahahaa. –

4

In Android 5.0 linee guida di progettazione dei materiali scoraggiare l'uso di icona nella ActionBar

per consentirle di aggiungere il seguente codice

getSupportActionBar().setDisplayShowHomeEnabled(true); 
getSupportActionBar().setLogo(R.mipmap.ic_launcher); 
getSupportActionBar().setDisplayUseLogoEnabled(true); 

merito va all'autore di questo article

1

ho usato il seguente chiamare all'interno onNavigationItemSelected:

HomeActivity.this.setTitle(item.getTitle()); 
Problemi correlati