Android
Speisekarte
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 dasgetItemId()
zurückgibt (definiert durch dasandroid: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);
}
}
}