Pembaruan : Untuk membuat menu sembulan di android dengan Kotlin, rujuk jawaban saya di sini .
Untuk membuat menu popup di android dengan Java:
Buat file layout di activity_main.xml
bawah res/layout
direktori yang hanya berisi satu tombol.
Nama file: 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>
Buat file di popup_menu.xml
bawah res/menu
direktori
Ini berisi tiga item seperti yang ditunjukkan di bawah ini.
Nama file: 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>
Kelas MainActivity yang menampilkan menu popup pada klik tombol.
Nama file: 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
}
}
Untuk menambahkan secara pemrograman:
PopupMenu menu = new PopupMenu(this, view);
menu.getMenu().add("One");
menu.getMenu().add("Two");
menu.getMenu().add("Three");
menu.show();
Ikuti tautan ini untuk membuat menu secara terprogram.
Saya tahu ini adalah pertanyaan lama, tetapi saya telah menemukan jawaban lain yang bekerja lebih baik untuk saya dan sepertinya tidak muncul di salah satu jawaban.
Buat tata letak xml:
Buat ListPopupWindow dan peta dengan konten:
Kemudian pada klik, tampilkan menu menggunakan fungsi ini:
sumber
Jalan Kotlin
UPDATE: Dalam kode di atas, fungsi yang berlaku mengembalikan
this
yang tidak diperlukan, jadi kita bisa menggunakanrun
yang tidak mengembalikan apa pun dan untuk membuatnya lebih sederhana kita juga bisa menghapus kurung kurawal dari metode showPopupMenu.Lebih sederhana:
sumber
Pertama, buat folder bernama "menu" di folder "res".
Lalu, buat Kelas Aktivitas Anda:
sumber