Update : Um ein Popup-Menü in Android mit Kotlin zu erstellen, verweise ich hier auf meine Antwort .
So erstellen Sie ein Popup-Menü in Android mit Java:
Erstellen Sie eine Layoutdatei activity_main.xml
unter dem res/layout
Verzeichnis, das nur eine Schaltfläche enthält.
Dateiname: activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="62dp"
android:layout_marginTop="50dp"
android:text="Show Popup" />
</RelativeLayout>
Erstellen Sie eine Datei popup_menu.xml
unter res/menu
Verzeichnis
Es enthält drei Elemente, wie unten gezeigt.
Dateiname: poupup_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/one"
android:title="One"/>
<item
android:id="@+id/two"
android:title="Two"/>
<item
android:id="@+id/three"
android:title="Three"/>
</menu>
MainActivity-Klasse, die beim Klicken auf die Schaltfläche das Popup-Menü anzeigt.
Dateiname: MainActivity.java
public class MainActivity extends Activity {
private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Creating the instance of PopupMenu
PopupMenu popup = new PopupMenu(MainActivity.this, button1);
//Inflating the Popup using xml file
popup.getMenuInflater()
.inflate(R.menu.popup_menu, popup.getMenu());
//registering popup with OnMenuItemClickListener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(
MainActivity.this,
"You Clicked : " + item.getTitle(),
Toast.LENGTH_SHORT
).show();
return true;
}
});
popup.show(); //showing popup menu
}
}); //closing the setOnClickListener method
}
}
Programmgesteuert hinzufügen:
PopupMenu menu = new PopupMenu(this, view);
menu.getMenu().add("One");
menu.getMenu().add("Two");
menu.getMenu().add("Three");
menu.show();
Folgen Sie diesem Link, um ein Menü programmgesteuert zu erstellen.
Ich weiß, dass dies eine alte Frage ist, aber ich habe eine andere Antwort gefunden, die für mich besser funktioniert hat und in keiner der Antworten zu erscheinen scheint.
Erstellen Sie eine Layout-XML:
Erstellen Sie ein ListPopupWindow und eine Karte mit dem Inhalt:
Zeigen Sie dann beim Klicken das Menü mit dieser Funktion an:
quelle
Der Kotlin-Weg
UPDATE: Im obigen Code gibt die Apply-Funktion zurück,
this
was nicht erforderlich ist, sodass wir verwenden können,run
die nichts zurückgeben. Um es noch einfacher zu machen, können wir auch die geschweiften Klammern der showPopupMenu-Methode entfernen.Noch einfacher:
quelle
Erstellen Sie zunächst einen Ordner mit dem Namen "menu" im Ordner "res".
Erstellen Sie dann Ihre Aktivitätsklasse:
quelle