12

Ho una barra delle azioni con una navigazione Tab. Durante l'esecuzione su 3.1 tutto andava bene, ma una volta ho installato l'applicazione su un dispositivo 4.1 le schede in cui forzato per essere visualizzato come uno spinner, rovinando il mio layout design. Sembra che le schede occupino troppo spazio (se rimuovo alcuni dei frammenti sembra ok ancora .. C'è un modo per fermare questo comportamento e visualizzare nuovamente la navigazione come schede proprio come in Android 3.1? Qualcuno lo sa?Come smettere di navigare nella scheda ActionBar per visualizzarlo come uno spinner quando diventa troppo lungo?

!.

grazie

risposta

17

Ho trovato la risposta here. Dovevo impostare la modalità di navigazione DOPO aver aggiunto le schede.

+0

Questo è geniale! Semplice e funzionante! grazie – pumpkee

6

in primo luogo, tanto per chiarire: questo non è un bug e funziona come previsto. Riferimento this discussione sui forum di codici di Google.

Tuttavia, sono arrivato alla soluzione che, se si ignora:

<bool name="abs__action_bar_embed_tabs">false</bool> //for ActionBarSherlock 
<bool name="android:action_bar_embed_tabs">false</bool> //for default ActionBar 

Non avrete un NAVIGATION_MODE_LIST in modalità verticale. Tuttavia non avrai schede incorporate e se ruoti lo schermo in orizzontale non funzionerà neanche. Per impostazione predefinita avrete schede incorporate e quindi un NAVIGATION_MODE_LIST su uno schermo con una larghezza di> 480 dpi.

Questo comportamento si verifica (presumo) poiché le schede incorporate sono limitate alla larghezza di ActionBar, quindi se si esegue l'override del valore booleano avrà tabulazioni in una riga separata e non collasserà. Ma sfortunatamente non riesco a spiegarmi perché questo non funziona nel paesaggio.

3

Come ho capito, si dovrebbe prendere in considerazione l'utilizzo di un ViewPager + PagerTitleStrip se si dispone di molte schede e si desidera renderle scorrevoli per tutto il tempo. Ecco una citazione da ttps:? //code.google.com/p/android/issues/detail id = 24439 # C9:

Se l'interfaccia utente contiene molte schede al punto in cui si colpisce lo scorrimento Schede o caso collasso-a-spinner, si potrebbe prendere in considerazione l'utilizzo di un PagerTitleStrip come indicatore piuttosto che schede complete per presentare queste informazioni in un modo meno disordinato. Questo può essere particolarmente utile se il set di schede visualizzate è sotto il controllo utente. Le schede cliccabili funzionano meglio quando c'è un piccolo set limitato come nell'app YouTube. Lo scorrimento delle strisce di schede perde l'accesso one-touch a qualsiasi scheda, il loro vantaggio principale su una semplice barra del titolo. Esempi dello stile PagerTitleStrip possono trovare nelle app Android Market e Google+.

Non consiglierei di usare trucchi poiché nessuno garantisce che i trucchi funzionino in modo stabile.

0

Se davvero si vuole utilizzare ancora le schede e impedirgli di crollare a un filatore, è tecnicamente possibile utilizzando la riflessione se vi capita di essere l'impostazione di un CustomView per le schede:

View v = <your custom tab view>; 
Tab tab = actionBar.newTab().setCustomView(v); 
    do{ 
     v = (View)v.getParent();     
    } while (v!=null && !v.getClass().getSimpleName().equalsIgnoreCase("ScrollingTabContainerView")); 

if(v!=null) { 
    try { 
     Method allowCollapse = v.getClass().getDeclaredMethod("setAllowCollapse", new Class[] { Boolean.TYPE }); 
     allowCollapse.setAccessible(true); 
     allowCollapse.invoke(v, new Object[]{ false });       
    } catch (Exception e) { 
    } 
} 

Se non c'è spazio sufficiente, le schede scorreranno nella barra delle azioni.Le schede e tutti gli oggetti di menu sono dati 1/2 della larghezza dello schermo in modo da poter calcolare se le schede finiranno per scorrere o meno e apportare regolazioni a schede, menu azioni, etichette ecc. O forzare le schede in una modalità sovrapposta per evitare le schede di scorrimento ... O come suggerito in precedenza, utilizzando invece il PagerTitleStrip.

Problemi correlati