2012-02-17 14 views

risposta

0

La barra inferiore viene riempita quando si dispone di più elementi di quelli che possono essere visualizzati nella barra superiore.

Invece di mostrare i tre punti "overflow", gli oggetti verranno posizionati sulla barra inferiore. Ricorda di utilizzare:

android:showAsAction="ifRoom|withText" 

sulle voci di menu in XML.

Read more here: http://developer.android.com/guide/topics/ui/actionbar.html#SplitBar

+0

Questo non sembra giusto. Nell'esempio di Google+, hanno anche l'icona di overflow in alto. – PolandSpring

+1

@kkshin Quella è una vista personalizzata e non la barra di azione divisa predefinita. – doorstuck

+0

Ho provato questo, ma va solo nella barra delle azioni in basso. – Timmmm

11

non credo che sia possibile utilizzare l'ActionBar standard. Quando si attiva una divisione ActionBar, le azioni ALL ALL appariranno in basso su una schermata stretta.

La barra in basso nell'attività "crea un post" dell'app Google+ sembra essere un'implementazione personalizzata. Notare che premere a lungo per mostrare che l'etichetta di un'azione non funziona e che la barra in basso rimane anche quando si passa all'orientamento orizzontale. L'elemento posizione è un interruttore a levetta che è anche un comportamento ActionBar non standard.

26

Spero che la mia risposta non sia troppo tardi per te.

  1. Usa android:uiOptions="splitActionBarWhenNarrow" (questo aggiunge roba nella barra in basso).
  2. Creare un nuovo layout come il codice seguente (questo layout gestirà tutti i tuoi articoli sulla barra superiore).

    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="right" > 
    <Switch 
        android:id="@+id/switch1" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent"/> 
    <ImageButton 
        android:id="@+id/action_starred" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        style="?android:attr/actionButtonStyle" 
        android:src="@android:drawable/ic_menu_compass" 
        android:onClick="FakeMenu"/> 
    </LinearLayout> 
    
  3. Incolla questo nella vostra attività

    ActionBar actionBar = getActionBar();    
    actionBar.setCustomView(R.layout.actionbar_top); //load your layout 
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME|ActionBar.DISPLAY_SHOW_CUSTOM); //show it 
    
  4. Questo è tutto :)

+0

Mi hai aiutato molto, grazie! Piccola annotazione per coloro che usano la lib ActionBarSherlock: è possibile ottenere l'oggetto della barra delle azioni con getSherlock(). GetActionBar(). – lopek

+0

come mostrare il menu sul flusso in alto anziché in basso ???? – samirprogrammer

2

Ho avuto lo stesso problema, nulla di ciò che ho trovato è stato davvero lavorando perché ho avuto a che fare con lo stretto della barra di azione, quindi su dispositivi di grandi dimensioni, i pulsanti sono stati posizionati in alto anziché in basso. Così ho finalmente risolto mettendo un "piè di pagina" nel layout principale:

Bottom ActionBar Example

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentTop="false" 
     android:layout_above="@+id/footer"> 

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:id="@+id/container" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:paddingLeft="@dimen/body_padding_large" 
      android:paddingRight="@dimen/body_padding_large" 
      android:paddingTop="@dimen/body_padding_medium" 
      android:paddingBottom="@dimen/body_padding_medium" 
      android:gravity="top"> 

     </LinearLayout> 

    </ScrollView> 
    <LinearLayout android:id="@+id/footer" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_alignParentBottom="true" 
     style="@android:style/ButtonBar"> 
     <Button android:id="@+id/btn_1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Button 1" /> 

     <Button android:id="@+id/btn_2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Button 2" /> 
    </LinearLayout> 
</RelativeLayout> 
0
<?xml version="1.0" encoding="utf-8"?> 

< LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="right" > 

<Switch 
    android:id="@+id/switch1" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent"/> 

<ImageButton 
    android:id="@+id/action_starred" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    style="?android:attr/actionButtonStyle" 
    android:src="@android:drawable/ic_menu_compass" 
    android:onClick="FakeMenu"/> 

</LinearLayout> 









//Then put these lines of code in your java class or activity 

    ActionBar actionBar = getActionBar();    
    actionBar.setCustomView(R.layout.actionbar); //load your layout 
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME|ActionBar.DISPLAY_SHOW_USTOM); //show it 

speranza // questo aiuta

+0

In tal caso e se si dispone dei diritti, è possibile votare la risposta (se non è necessario il commento). Tuttavia, se hai trovato un modo alternativo per risolvere il problema, sentiti libero di condividere. – TocToc

Problemi correlati