Popup menu là gì

 Popup menu trong Android

 Android Popup Menu hiển thị menu bên dưới văn bản neo nếu không gian có sẵn nếu không ở trên các văn bản neo. Nó biến mất nếu bạn nhấp vào bên ngoài popup menu. Các android.widget.PopupMenu là lớp con trực tiếp của lớp java.lang.Object.

Phương thức thường sử dụng trong PopupMenu

1. setOnMenuItemClickListener:  Phương thức này được sử dụng để  gắn listener cho đối tượng PopupMenu, khác với menu ngữ cảnh và menu tùy chọn là 2 loại menu này đã có sẵn trong Activity và View nên chúng ta không cần gọi trực tiếp ra như đối tượng menu popup.
2. show[]: Sau khi tạo PopupMenu, chúng ta phải gọi phương thức show[] nếu muốn hiện menu này ra.
3. onMenuItemClick[]: Phương thức onOptionsItemSelected[] sẽ xử lý sự kiện click menu. Phương thức này nhận vào một đối tượng android.view.MenuItem.

Ví dụ: Trong ví dụ này chúng ta sẽ làm ứng dụng gồm có 1 TextView 1 Button. Khi người sử dụng click vào Button "Show menu" một PopupMenu sẽ xuất hiện. Tiến hành tạo project, vào thư mục  res /layout -> activity_main.xml  thiết kế giao diện sau:

Bước 1: Tạo một project tên là PopupMenuFile->New->Android Application Project điền các thông tin ->Next ->Finish

Bước 2: Mở res -> layout -> xml [hoặc] activity_main.xml và thêm code trong Relaytive Layout.
 

Bước 3: Trong tập tin strings.xml chúng ta định nghĩa danh sách các item dùng cho PopupMenu.

MainActivity Show menu Item 1 Item 2

Bước 4: Trong thư mục res/menu tạo môt tập tin popup_menu.xml. Bên trong tập tin này chúng ta sử dụng thẻ menu để khai báo menu và thẻ item để khai báo các item trong menu đó.

Bước 5: Thiết lập sự kiện cho Button "Show menu"

public void onClick[View v] { PopupMenu pm = new PopupMenu[this, v]; pm.getMenuInflater[].inflate[R.menu.popup_menu, pm.getMenu[]]; pm.setOnMenuItemClickListener[this]; pm.show[]; }

Trong phương thức onClick[], chúng ta sẽ hiển thị popup menu bằng lớp MenuInflater giống như menu ngữ cảnh và menu tùy chọn. Ngoài ra ở đây chúng ta phải gắn listener cho đối tượng PopupMenu này thông qua phương thức setOnMenuItemClickListener[], khác với menu ngữ cảnh và menu tùy chọn là 2 loại menu này đã có sẵn trong Activity và View nên chúng ta không cần gọi trực tiếp ra như đối tượng menu popup. Sau khi tạo PopupMenu, chúng ta phải gọi phương thức show[] nếu muốn hiện menu này ra.

Bước 6: Bên trong phương thức onMenuItemClick[], chúng ta thiết lập giá trị của TextView là giá trị của menu item đã được click.

@Override public boolean onMenuItemClick[MenuItem item] { tv.setText[item.toString[] + " selected"]; return true; }

Toàn bộ code trong MainActivity.java

package hiepsiit.com.popupmenu; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.PopupMenu; import android.widget.PopupMenu.OnMenuItemClickListener; import android.widget.TextView; public class MainActivity extends Activity implements OnMenuItemClickListener{ private TextView tv; @Override protected void onCreate[Bundle savedInstanceState] { super.onCreate[savedInstanceState]; setContentView[R.layout.activity_main]; tv = [TextView] findViewById[R.id.tvId]; } @Override public boolean onCreateOptionsMenu[Menu menu] { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater[].inflate[R.menu.main, menu]; return true; } public void onClick[View v] { PopupMenu pm = new PopupMenu[this, v]; pm.getMenuInflater[].inflate[R.menu.popup_menu, pm.getMenu[]]; pm.setOnMenuItemClickListener[this]; pm.show[]; } @Override public boolean onMenuItemClick[MenuItem item] { // TODO Auto-generated method stub tv.setText[item.toString[]+" đã chọn"]; return false; } }

Download ví dụ

Ứng dụng này được phát triển bởi adt bundleandroid 4.2 sử dụng minimum sdk 11 and target sdk 21.

Kết quả khi chạy ứng dụng:

Sau đó click Button "Show menu":


 

Chủ Đề