12

Nun sind alle Methoden in Bezug auf Navigationsmodi in der Klasse ActionBar wie setNavigationMode() ... veraltet.wie Sie NAVIGATION_MODE_LIST in der Toolbar einstellen new appcompat v7 21

Die Dokumentation erklärt:

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

In meiner aktuellen Anwendung gibt einen Spinner auf ActionBar ist. Wie bewerbe ich mich NAVIGATION_MODE_LIST auf der neuen Widget-Toolbar in der neuen Version appcompat v7 21.
Vielen Dank im Voraus.

Antwort

17

Mit der API 21 ist die Methode setNavigationMode(ActionBar.NAVIGATION_MODE_LIST)deprecated.

Der beste Weg, mit einer Schleuder zu arbeiten, ist eine Toolbar wie folgt zu verwenden:

<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> 

Sie ein Beispiel, in dem richtig ist Google IO 2014

+0

Dank ich werde versuchen, es –

+1

Könnten Sie eine Lösung sagen NAVIGATION_MODE_TAB auf Toolbar setzen –

+1

es existiert nicht Verwenden Sie die SlidingTabsBasic versehen hier:. Http://developer.android. com/samples/SlidingTabsBasic/index.html –

5

Wie üblich Gabriele finden, so wird Ihr Code aussehen wie folgt aus:

So wird es wie so etwas aussehen:

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); 
    } 

Und achten Sie darauf, spinnerAdapter nicht zu verwenden (weil Sie seinen Stil nicht mit dem AppTheme verwalten können).

Und wenn Sie Tab (NavigationMode.Tabs) verwenden möchten, sollten Sie jetzt die Design-Bibliothek verwenden (hier erklärt: http://android-developers.blogspot.fr/2015/05/android-design-support-library.html?m=1)and Kopieren und Einfügen unter "

Tabs zwischen verschiedenen Ansichten in Ihrer Anwendung über Registerkarten Switching ist keine neues Konzept Materialdesign und sie als Top- Ebene Navigationsmuster ebenso zu Hause sind oder für unterschiedliche Gruppen von Inhalten in Ihrer App (zum Beispiel verschiedene Musikgenres) zu organisieren. Umset

Die TabLayout der Design-Bibliothek Beide festen Registerkarten, bei denen die Breite der Ansicht gleichmäßig auf alle Registerkarten verteilt ist, sowie scrollbare Registerkarten, in denen die Registerkarten keine einheitliche Größe haben und horizontal mit verschoben werden können. Registerkarten können programmgesteuert hinzugefügt werden:

TabLayout tabLayout = ...; tabLayout.addTab (tabLayout.newTab(). SetText ("Tab 1")); Wenn Sie jedoch einen ViewPager für horizontales Paging zwischen Registerkarten verwenden, können Sie Tabs direkt aus PagerAdapter getPageTitle() erstellen und dann verbinden Sie die beiden zusammen mit setupWithViewPager() . Dies stellt sicher, dass Tab-Selection-Ereignisse den ViewPager aktualisieren und Seitenänderungen das ausgewählte Register aktualisieren. .

"

+1

Ich musste R.layout.support_simple_spinner_dropdown_item anstelle von R.layout.actionbar_spinner_dropdown_item verwenden, sonst für mich gearbeitet. – Mick

Verwandte Themen