Suche…


Syntax

  • inflater.inflate (Menü R.menu.your_xml_file, Menü);

Parameter

Parameter Beschreibung
inflate(int menuRes, Menu menu) Inflation einer Menühierarchie aus der angegebenen XML-Ressource.
getMenuInflater () Gibt einen MenuInflater mit diesem Kontext zurück.
onCreateOptionsMenu (Menu menu) Initialisieren Sie den Inhalt des Standardoptionen-Menüs der Aktivität. Sie sollten Ihre Menüpunkte in das Menü einfügen.
onOptionsItemSelected (MenuItem item) Diese Methode wird aufgerufen, wenn ein Element in Ihrem Optionsmenü ausgewählt wird

Bemerkungen

Um mehr über Menüs zu erfahren, lesen Sie dies . Ich hoffe es hilft!

Optionsmenü mit Trennwänden

In Android gibt es ein Standard-Optionsmenü, das eine Reihe von Optionen annehmen kann. Wenn eine größere Anzahl von Optionen angezeigt werden muss, ist es sinnvoll, diese Optionen zu gruppieren, um die Übersichtlichkeit zu gewährleisten. Optionen können gruppiert werden, indem Trennlinien (dh horizontale Linien) zwischen ihnen platziert werden. Um Trennungen zu ermöglichen, kann das folgende Thema verwendet werden:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:dropDownListViewStyle">@style/PopupMenuListView</item>
</style>
<style name="PopupMenuListView" parent="@style/Widget.AppCompat.ListView.DropDown">
    <item name="android:divider">@color/black</item>
    <item name="android:dividerHeight">1dp</item>
</style>

Durch Ändern des Themas können Teiler zu einem Menü hinzugefügt werden.

Wenden Sie die benutzerdefinierte Schriftart auf das Menü an

public static void applyFontToMenu(Menu m, Context mContext){
    for(int i=0;i<m.size();i++) {
        applyFontToMenuItem(m.getItem(i),mContext);
    }
}
public static void applyFontToMenuItem(MenuItem mi, Context mContext) {
    if(mi.hasSubMenu())
        for(int i=0;i<mi.getSubMenu().size();i++) {
            applyFontToMenuItem(mi.getSubMenu().getItem(i),mContext);
        }
    Typeface font = Typeface.createFromAsset(mContext.getAssets(), "fonts/yourCustomFont.ttf");
    SpannableString mNewTitle = new SpannableString(mi.getTitle());
    mNewTitle.setSpan(new CustomTypefaceSpan("", font, mContext), 0, mNewTitle.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    mi.setTitle(mNewTitle);
}

und dann in der Aktivität:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    applyFontToMenu(menu,this);
    return true;
}

Ein Menü in einer Aktivität erstellen


Um ein eigenes Menü zu definieren, erstellen Sie eine XML-Datei im Verzeichnis res/menu/ des Projekts und erstellen Sie das Menü mit den folgenden Elementen:

  • <menu> : Definiert ein Menü, das alle Menüelemente enthält.
  • <item> : Erstellt ein MenuItem, das ein einzelnes Element in einem Menü darstellt. Wir können auch ein verschachteltes Element erstellen, um ein Untermenü zu erstellen.

Schritt 1:

Erstellen Sie Ihre eigene XML-Datei wie folgt:

In res/menu/main_menu.xml :

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

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/aboutMenu"
        android:title="About" />
    <item
        android:id="@+id/helpMenu"
        android:title="Help" />
    <item
        android:id="@+id/signOutMenu"
        android:title="Sign Out" />
</menu>

Schritt 2:

Um das Optionsmenü anzugeben, überschreiben Sie onCreateOptionsMenu() in Ihrer Aktivität .

In dieser Methode können Sie Ihre res/menu/main_menu.xml aufpumpen (definiert in Ihrer XML-Datei, z. B. res/menu/main_menu.xml ).

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        return true;
    }

Wenn der Benutzer ein Element aus dem Optionsmenü auswählt, ruft das System die überschriebene onOptionsItemSelected() Methode Ihrer Aktivität auf .

  • Diese Methode übergibt das ausgewählte MenuItem.
  • Sie können das Element identifizieren, indem Sie getItemId() aufrufen, das die eindeutige ID für das getItemId() zurückgibt (definiert durch das android:id attribute im Menü resource - res/menu/main_menu.xml ). * /
 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.aboutMenu:
            Log.d(TAG, "Clicked on About!");
            // Code for About goes here
            return true;
        case R.id.helpMenu:
            Log.d(TAG, "Clicked on Help!");
            // Code for Help goes here
            return true;
        case R.id.signOutMenu:
            Log.d(TAG, "Clicked on Sign Out!");
            // SignOut method call goes here
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

Einpacken

Ihr Activity sollte wie Activity aussehen:

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "mytag";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.aboutMenu:
                Log.d(TAG, "Clicked on About!");
                // Code for About goes here
                return true;
            case R.id.helpMenu:
                Log.d(TAG, "Clicked on Help!");
                // Code for Help goes here
                return true;
            case R.id.signOutMenu:
                Log.d(TAG, "User signed out");
                // SignOut method call goes here
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

Screenshot, wie Ihr eigenes Menü aussieht:

SampleMenuApp



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow