Menu là control rất được hay sử dụng trong Android. Có 3 loại menu đó là OptionMenu, ContextMenu và PopupMenu. Mình sẽ giới thiệu lần lượt từng loại cho các bạn. Các bạn cùng theo dõi và làm theo nhé.
Mỗi ứng dụng có thể mở ra một menu để hiển thị các hành động thông qua một popup. Các Option menu chỉ tồn tại nếu thiết bị có hỗ trợ phím “option”. Nhưng mặc dù có sẵn phím này, Android 4.0 trở lên khuyến khích người lập trình sử dụng ActionBar thay cho menu.
Chúng ta cùng tạo một project demo về OptionMenu nhé.
Tại mục res bạn phím phải rồi chọn New > Directory để tạo một thư mục chứa menu và lưu ý là bạn phải đặt chính xác tên thư mục là menu (đây là thư mục android tạo ra để chứa các file menu.xml) (Hình 1).
Hình 1.Tạo một thư mục menu
Các bạn có thể tạo file menu của bạn bằng cách sau.
Hình 2
Sau đó các bạn đặt tên là mymenu. Các bạn thiết kế menu như đoạn code sau:
Các bạn có thể thấy menu gồm có 3 item có id và title riêng.
Các bạn vào file main và viết code như sau:
//Xử lý khi click vào sẽ show ra title của item đó
//Xử lý khi click vào sẽ show ra title của item đó
//Lấy ra id của item vừa click
//Lấy ra id của item vừa click
// Hàm sử lý sự kiện khi click vào mỗi item
// Hàm sử lý sự kiện khi click vào mỗi item
// load file menu của chúng ta ở đây.
// load file menu của chúng ta ở đây.
Và bạn hãy run thử coi.
Bạn cũng có thể chỉ định một ContextMenu (menu ngữ cảnh) cho một View. Nó được kích hoạt thông qua hành động long-click (nhấn và giữ một lúc rồi nhả ra) lên View. Một context menu cho một View được đăng ký thông qua hàm registerForContextMenu(view). Hàm onCreateContextMenu() sẽ được gọi mỗi khi context menu được kích hoạt.
Chúng ta cùng đi vào chi tiết các bước làm context menu nhé.
Bước 1. Chúng ta sẽ tiếp tục sử dụng project MenuDemo ở trên. Giờ ta sẽ thiết kế thêm một button là ContextMenu như sau:
Bước 2. Các bạn tạo thêm 1 file layout menu có tên là context_menu.xml có dạng như sau:
Bước 3. Xử lý code để đăng ký trong mainActivity như sau:
//Xử lý sự kiện khi click vào từng item
//Xử lý sự kiện khi click vào từng item
//Nạp contextmenu mà chúng ta vừa tạo vào ứng dụng
//Nạp contextmenu mà chúng ta vừa tạo vào ứng dụng
Các chú ý:
– Hàm onCreateContextMenu dùng để nạp Context Menu XML vào ứng dụng.
– Hàm onContextItemSelected dùng để xử lý sự kiện.
Sau khi đã hoàn thành code, các bạn chạy ứng dụng xem sao.
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 nó. Các android.widget.PopupMenu là lớp con trực tiếp của lớp java.lang.Object.
Các bước xây dựng popup menu:
Bước 1. Ta vẫn sử dụng project ở phần 1 và 2. Ta tạo thêm một button nằm bên dưới button context.
Bước 2. Tương tự như 2 phần trên, ta tạo file layout cho popupmenu như sau:
Bước 3. Ta thêm những dòng code sau vào hàm onCreate():
btnPopupMenu
=
(
Button
)
findViewById
(
R
.
id
.
btnPopupMenu
)
;
//bắt sự kiện cho button
btnPopupMenu
.
setOnClickListener
(
new
View
.
OnClickListener
(
)
{
@Override
public
void
onClick
(
View
view
)
{
//Khởi tạo 1 popupmenu
PopupMenu
popupMenu
=
new
PopupMenu
(
getApplicationContext
(
)
,
btnPopupMenu
)
;
//đẩy layout của mình vừa tạo ở trên vào ứng dụng
popupMenu
.
getMenuInflater
(
)
.
inflate
(
R
.
menu
.
popup_menu_layout
,
popupMenu
.
getMenu
(
)
)
;
//Sự kiện click vào item của menu
popupMenu
.
setOnMenuItemClickListener
(
new
PopupMenu
.
OnMenuItemClickListener
(
)
{
@Override
public
boolean
onMenuItemClick
(
MenuItem
menuItem
)
{
Toast
.
makeText
(
MainActivity
.
this
,
“You Clicked : “
menuItem
.
getTitle
(
)
,
Toast
.
LENGTH_SHORT
)
.
show
(
)
;
return
true
;
}
}
)
;
popupMenu
.
show
(
)
;
}
}
)
;