0

Ich bin bereit, einen Spinner hinzuzufügen, der geöffnet wird, wenn ich auf den Titel der Aktivität in der ActionBar (ich verwende keine Toolbar, verwende ich die Unterstützung ActionBar).Android - Hinzufügen eines Spinner auf der ActionBar-Titel

Ich versuchte mit der Methode setListNavigationCallbacks(SpinnerAdapter adapter, ActionBar.OnNavigationListener callback) auf der ActionBar. Es funktioniert, aber es zeigt das ausgewählte Element neben dem Titel an.

Code der Aktivität onCreate

actionBar.setTitle("Title"); 
actionBar.setNavigationMode(NAVIGATION_MODE_LIST); 
actionBar.setListNavigationCallbacks(spinnerAdapter, null); 
// spinnerAdapter contains simply numbers from 1 to 10 

Ich weiß, dass diese Methoden und mit der Unterstützung ActionBar anstelle der Toolbar sind veraltet, aber die Änderung der ActionBar durch die Toolbar in meinem Projekt enorme Auswirkungen haben mit und ich werde eine Menge Arbeit zu erledigen haben ...

Ich möchte keine externe Bibliothek verwenden, wenn dies möglich ist, da dies offensichtlich nicht sehr kompliziert zu tun ist.

Vielen Dank!

Antwort

0

Zuerst müssen Sie eine XML-Datei im Ordner res/menu/erstellen und einen Menüpunkt mit der ID, name, actionViewClass hinzufügen. Die Menüelementdatei sieht wie folgt aus.

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
<item 
    android:id="@+id/spinner" 
    android:title="ActionBar Spinner" 
    app:actionViewClass="android.widget.Spinner" 
    android:background="#ff00" 
    app:showAsAction="always" /> 
</menu> 

öffnen Sie Java-Aktivitätsdatei, um onCreateOptionMenu Methode gehen, wenn bereits haben und wenn nicht, dann neue Methode überschreibt genannt onCreateOptionMenu und verknüpft es mit Ihrem Spinner Menüpunkt Datei getMenuInflater verwenden. Und setze den Adapter auf die Spinner-Menüelement-Klasse. Java-Aktivitätsdatei sieht wie folgt aus.

public class SpinnerAndroidActionBarToolBar extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.android_actionbar_toolbar_spinner_example_layout); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.android_action_bar_spinner_menu, menu); 
     MenuItem item = menu.findItem(R.id.spinner); 
     Spinner spinner = (Spinner) MenuItemCompat.getActionView(item); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
      R.array.spinner_list_item_array, android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter); 
     return true; 
    } 
} 
+0

Vielen Dank für Ihre Antwort, aber dies wird nur ein Spinner auf der rechten Seite auf dem ActionBar hinzufügen ... Ich möchte den Spinner zu öffnen, wenn ich auf dem ActionBar Titel klicken und kein ActionBar Aktion – Youb