12

Ora tutti i metodi relativi alle modalità di navigazione nella classe ActionBar, ad esempio setNavigationMode() ... sono ora obsoleti.come impostare NAVIGATION_MODE_LIST su Toolbar new appcompat v7 21

La documentazione spiega:

Action bar navigation modes are deprecated and not supported by inline toolbar action bars. Consider using other common navigation patterns instead. 

Nella mia domanda attuale, non v'è un filatore sul ActionBar. Come applico NAVIGATION_MODE_LIST sulla nuova barra degli strumenti del widget nella nuova versione appcompat v7 21.
Grazie in anticipo.

risposta

17

Con l'API 21 il metodo setNavigationMode(ActionBar.NAVIGATION_MODE_LIST) è deprecated.

Il modo migliore di lavorare con un filatore è quello di utilizzare una barra degli strumenti come questo:

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar_actionbar" 
     android:layout_height="?attr/actionBarSize" 
     android:layout_width="match_parent" 
     android:background="?attr/colorPrimary"> 

    <Spinner 
      android:id="@+id/spinner_toolbar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 

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

È possibile trovare un esempio nella Google IO 2014

+0

Grazie Ci proverò –

+1

potrebbe dirvi una soluzione per impostare NAVIGATION_MODE_TAB sulla barra –

+1

non esiste Utilizzare la SlidingTabsBasic fornito qui:?. Http://developer.android. com/samples/SlidingTabsBasic/index.html –

5

Come al solito Gabriele è giusto, in modo che il codice sarà così:

So It sarà simile a qualcosa di simile:

private ActionBar actionBar; 
    private Toolbar toolbar; 
    private Spinner spinner; 
    private List<String> mNavigationItems; 
    private ArrayAdapter<CharSequence> mArrayAdapter; 
    /*** 
    * Boolean to know which version is running 
    */ 
    private boolean postICS,postLollipop; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_nav_list);//find the toolbar 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     postLollipop =getResources().getBoolean(R.bool.postLollipop); 
     if(postLollipop){ 
      toolbar.setElevation(15); 
     } 
     //define the toolbar as the ActionBar 
     setSupportActionBar(toolbar); 
     actionBar=getSupportActionBar(); 
     //now manage the spinner 
     mNavigationItems=new ArrayList<String>(); 
     mNavigationItems.add("navigation 1"); 
     mNavigationItems.add("nav 2"); 
     mNavigationItems.add("navigation 3"); 
     spinner= (Spinner) findViewById(R.id.action_bar_spinner); 
     mArrayAdapter = new ArrayAdapter(this, R.layout.actionbar_spinner_dropdown_item, mNavigationItems); 
     mArrayAdapter.setDropDownViewResource(R.layout.actionbar_spinner_dropdown_item); 
     spinner.setAdapter(mArrayAdapter); 
    } 

E fai attenzione a non usare spinnerAdapter (perché non sarai in grado di gestire il suo stile usando l'AppTheme).

E se si desidera utilizzare la scheda (NavigationMode.Tabs) si dovrebbe usare ora la libreria Design (spiegato qui: pasta http://android-developers.blogspot.fr/2015/05/android-design-support-library.html?m=1)and copia sotto "

schede di commutazione tra i diversi punti di vista nella vostra applicazione tramite le schede è non un nuovo concetto al design dei materiali e sono ugualmente nel paese come un top modello di navigazione livello o per l'organizzazione di diversi raggruppamenti di contenuti all'interno della vostra app (ad esempio, diversi generi di musica).

della biblioteca design TabLayout Imple fornisce entrambe le schede fisse, in cui la larghezza della vista è divisa equamente tra tutte le schede, nonché le linguette scorrevoli , in cui le schede non hanno una dimensione uniforme e possono scorrere in orizzontale . Le schede possono essere aggiunte a livello di codice:

TabLayout tabLayout = ...; tabLayout.addTab (tabLayout.newTab(). SetText ("Scheda 1")); Tuttavia, se si utilizza un ViewPager per il paging orizzontale tra le schede , è possibile creare le schede direttamente da getPageTitle() del proprio PagerAdapter(), quindi connettersi tra loro utilizzando setupWithViewPager(). Ciò garantisce che gli eventi di selezione delle schede aggiornino ViewPager e le modifiche apportate alla pagina aggiornino la scheda selezionata . .

"

+1

Ho dovuto usare R.layout.support_simple_spinner_dropdown_item invece di R.layout.actionbar_spinner_dropdown_item, altrimenti ha funzionato per me. – Mick

Problemi correlati