Pages - Menu

Thứ Năm, 12 tháng 5, 2016

Hướng dẫn tạo Options Menu trong Android Studio



Menu trong android rất hữu ích trong việc giúp người dùng tương tác với ứng dụng tốt hơn, có 3 loại menu chính là : OptionMenu, ContextMenu PopupMenu. Trong bài viết này mình sẽ hướng dẫn các bạn tạo ra một OptionMenu....


Đầu tiên bạn vào click chuột phải vào mục res - 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


Tiếp theo trong thư mục menu bạn tạo mới một File menu resource và đặt tên cho nó (ví dụ mình sẽ đặt là mymenu) đây chính là menu mình sẽ sử dụng cho OptionMenu.(Hình 2,3
)

Hình 2.Tạo một file menu resource

Hình 3. Đặt tên menu là mymenu

Từ sau phiên bản android 3.0 và API > 11 thì android chuyển sang hiển thị OptionMenu trên thanh ActionBar (Hình 4) thay vì hiển thị dưới dạng 6 nút cổ điển như trước đây dù vậy việc thực thi tạo một menu vẫn không thay đổi.

Hình 4

Sau khi tạo xong file mymenu.xml thì ta tiến hành tạo các Items cho menu. Một Item chúng ta chỉ cần quan tâm 3 thuộc tính chính:
- id : dùng để gọi Item khi cần sử dụng.
-title : hiển thị tiêu đề của một Item.
- icon : hiển thị item theo dạng một icon.



Hình 5: Các thuộc tính của Item


Hình 6 : Menu hiển thị lên ActionBar

Trong Item đăng ký mình có set Icon và thuộc tính showAsAction ifRoom nên Item này sẽ hiển thị là một icon (hình người có dấu cộng trong hình) và hiển thị trên thanh ActionBar.

Hai Item còn lại mình không đặt thuộc tính showAsAction nên sẽ mặc định nằm trong thanh menu tràn và khi click vào biểu tượng 3 chấm sẽ hiển thị thanh menu tràn.(Hình 7)

Hình 7: Thanh menu tràn hiển thị 2 Item còn lại



Lưu ý : các bạn chú ý vào hình dưới đây 
Hình 8

Các bạn để ý 2 dòng mình gạch đỏ :
- Dòng đầu tiên cho phép mình cập nhật thư viện của ActionBarCompat, từ khi ActionBarSherklock ngừng hoặt động và android chuyển sang dùng ActionBarCompat (phiên bản này có thể cho phép dùng Menu trên ActionBar ngay cả cho những phiên bản Android cũ) ta phải khai báo thêm thư viện và phải dùng namespace app để gọi những hàm như : showAsAction , actionViewClass , actionProviderClass và actionLayout.(Dòng gạch đỏ 2,3)

Sau khi đã tạo xong Items cho file mymenu.xml ta chuyển qua class MainActivity và tiến hành tạo OptionMenu trên thanh Actionbar.

Hình 9


Trong MainActivity ta tiến hành gọi hàm OnCreateOptionsMenu(Menu menu) với tham số là một OptionMenu hệ thống tạo mặc định cho chúng ta. Gọi hàm getMenuInflater() để tạo một MenuInflater (MenuInflater không thể khởi tạo với "new MenuInflater()" mà dùng hàm getMenuInflater() ).

Tiếp theo ta tiến hành cho MenuInflater().inflate(R.menu.mymenu,menu)  . Trong hàm inflate() tham số thứ nhất là menu cần lấy ra để tạo, tham số thứ 2 là OptionMenu. Vậy là chúng ta đã tạo xong một OptionMenu, còn những dòng code có comment là dùng để lấy ra ActionView của một Item, ở đây mình lấy ra cái SearchView của item đăng ký.

Đoạn code sau đây mô tả việc gán sự kiện khi click vào các Item (hình 10):

Hình 10: Gán sự kiện click các Items





Vậy là chúng ta đã hoàn thành việc tạo một OptionMenu. Chúc các bạn thành công!

1 nhận xét:

  1. ADD cho mình hỏi chút muốn thay background của cái menu thì làm thế nào ạ? mình tạo được menu rùi nhưng mầu nền nó lại màu đen mình muốn thay bằng màu khác mà nhờ anh google mãi ko thấy. add chỉ dùm mình được ko ạ? thank's!

    Trả lờiXóa