Создаем всплывающее Popup меню
Главная » Создаем всплывающее Popup меню

Начиная из версии Android 3.0+ (Honeycomb) в пользовательском интерфейсе платформы Android появилась возможность создавать всплывающее popup меню, которое вызывается при нажатии на какой либо элемент интерфейса, например, кнопку Button. В использовании такого меню есть много плюсов и преимуществ, в основном это удобство вызова нужного меню в нужном месте без привязки ни к стандартному меню приложения, ни к физическим кнопкам устройства, а также popup меню удобно и полезно с целью просто расширить количество доступных пользователю опций и настроек, когда пихать их в стандартное меню уже просто некуда.

Создание всплывающего popup меню на Android довольно просто. Основные шаги его реализации следующие:

- создать само меню в виде xml файла в папке res/menu проекта;

- вызвать popup меню при нажатии на необходимый элемент пользовательского интерфейса;

- задать действия, выполняемые программой при нажатии по пунктам popup меню, с помощью метода onMenuItemClick;

В нашем примере приложение будет состоять из одной кнопки Button, при нажатии на которую и будет вызываться всплывающее меню, состоящее из трех пунктов, при нажатии на любой из которых будет высвечиваться Toast сообщение.

Начинаем с создания проекта, выбираем Blank Activity, минимальная версия Android 3.0+. Создадим кнопку для вызова меню. Открываем файл activity_main.xml и добавляем ее:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <Button
 android:id="@+id/button_popup"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:text="ОТКРЫТЬ POPUP МЕНЮ"
 android:textAppearance="?android:attr/textAppearanceLarge"
 android:layout_margin="20dp"
 android:background="#176CEC"
 android:textColor="#fff"
 android:textStyle="bold" />
</LinearLayout>

Теперь создаем файл для нашего popup меню. В папке res/menu создаем файл по имени popup.xml и придаем ему такой вид:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
 <item
 android:id="@+id/item1"
 android:title="Пункт 1"
 android:visible="true"/>
 <item
 android:id="@+id/item2"
 android:title="Пункт 2"
 android:visible="true"/>
 <item
 android:id="@+id/item3"
 android:title="Пункт 3"
 android:visible="true"/>
</menu>

Теперь переходим в файл MainActivity.java. Мы инициализируем здесь нашу Button кнопку, установим для нее слушатель нажатий OnClickListener, при нажатии на кнопку вызываем popup меню, предварительно настроив его вид с файла popup.xml и задав слушатель нажатий по пунктам меню OnMenuItemClickListener, и при нажатии на любой пункт создаем отображение соответствующего Toast сообщения. Полный код MainActivity.java:

import android.app.Activity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.PopupMenu;
import android.widget.PopupMenu.OnMenuItemClickListener;
import android.widget.Toast;

public class MainActivity extends Activity implements OnMenuItemClickListener {

 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 findViewById(R.id.button_popup)
 //Следим за нажатиями по кнопке:
 .setOnClickListener(new OnClickListener() {

 //Обрабатываем нажатие кнопки Button:
 @Override
 public void onClick(View view) {
 //Вызываем popup меню, заполняем его с файла popup.xml и настраиваем
 //слушатель нажатий по пунктам OnMenuItemClickListener:
 PopupMenu popup_menu = new PopupMenu(MainActivity.this, view);
 popup_menu.setOnMenuItemClickListener(MainActivity.this);
 popup_menu.inflate(R.menu.popup);
 popup_menu.show();
 }
 });
 }
 //Обрабатываем нажатия по пунктам popup меню, ссылаясь на id каждого пункта, заданные в файле popup.xml:
 public boolean onMenuItemClick(MenuItem item) {
 switch (item.getItemId()) {
 case R.id.item1:
 Toast.makeText(this, "Выбран пункт 1", Toast.LENGTH_SHORT).show();
 return true;
 case R.id.item2:
 Toast.makeText(this, "Выбран пункт 2", Toast.LENGTH_SHORT).show();
 return true;
 case R.id.item3:
 Toast.makeText(this, "Выбран пункт 3", Toast.LENGTH_SHORT).show();
 return true;
 }
 return true;
 }
}

Вот и все, всплывающее popup меню успешно создано, осталось только проверить его пригодность. Запускаем приложение и смотрим на результат:

работающее popup всплывающее меню

Все работает как надо :).

Категория: Уроки программирования | Просмотров: 1514 | Добавил: Oleg | Теги: всплывающее меню, создаем Popup меню в Android, Popup menu | Рейтинг: 0.0/0
Всего комментариев: 0
avatar