Обновление : чтобы создать всплывающее меню в Android с помощью Kotlin, обратитесь к моему ответу здесь .
Чтобы создать всплывающее меню в Android с помощью Java:
Создайте файл макета activity_main.xml
в res/layout
каталоге, который содержит только одну кнопку.
Имя файла: 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>
Создайте файл popup_menu.xml
в res/menu
каталоге
Он содержит три элемента, как показано ниже.
Имя файла: 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 класс, который отображает всплывающее меню при нажатии кнопки.
Имя файла: 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
}
}
Чтобы добавить программно:
PopupMenu menu = new PopupMenu(this, view);
menu.getMenu().add("One");
menu.getMenu().add("Two");
menu.getMenu().add("Three");
menu.show();
Перейдите по этой ссылке, чтобы создать меню программным способом.
Я знаю, что это старый вопрос, но я нашел другой ответ, который работал лучше для меня, и, похоже, он не появляется ни в одном из ответов.
Создайте макет xml:
Создайте ListPopupWindow и карту с содержимым:
Затем, щелкнув, отобразите меню, используя эту функцию:
источник
Котлинский путь
ОБНОВЛЕНИЕ: в приведенном выше коде функция apply возвращает,
this
что не требуется, поэтому мы можем использоватьrun
which ничего не возвращают, и, чтобы сделать его еще проще, мы также можем удалить фигурные скобки метода showPopupMenu.Еще проще:
источник
Сначала создайте папку с именем «menu» в папке «res».
Затем создайте свой класс активности:
источник