[Android Cơ Bản] Menu trong Android – P1
Hi các em, trong bài này anh giới thiệu tới các em 3 loại Menu trong Android nhé.
1) Option menu
Option Menu là loại menu nằm trên ActionBar hoặc Toolbar ở phía bên phải. Menu hiển thị dưới dạng text, text+icon hoặc icon “ba chấm”, menu cũng hỗ trợ tùy biến giao diện
Để thiết lập menu chúng ta cần tạo file menu.xml trong thư mục res/ menu như sau :

Khởi tạo 2 phương thức trong MainActivity.java để tạo Menu và sự kiện click Menu như sau :
// khoi tao option menu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// khởi tạo menu từ file my_menu trong thư mục res/menu
getMenuInflater().inflate(R.menu.my_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//Bắt sự kiện click menu thông qua menu id
switch (item.getItemId()) {
case R.id.menu_share:
Toast.makeText(this, "Share", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
Chạy ứng dụng ta được kết quả như sau :

2) Context menu
Context menu là loại menu hiển thị ở giữa màn hình, tương tự như 1 dialog. Context menu được gắn vào 1 view và mở ra thông qua sự kiện “long click” vào view.
Để khởi tạo Context menu, chúng ta thêm code vào MainActivity như sau :
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.my_menu, menu); } @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_share: Toast.makeText(this, "Share", Toast.LENGTH_SHORT).show(); break; } return super.onContextItemSelected(item); }
Thêm câu lệnh đăng kí Context menu cho view trong phương thức onCreate của MainActivity . Trong ví dụ này anh dùng là 1 TextView được tham chiếu vào biến là tvContext
registerForContextMenu(tvContext);
Chạy thử được kết quả như sau :

3) Popup menu
Popup menu là dạng menu hiển thị như dialog nhưng vị trí hiển thị cần gắn với 1 view
Cách khởi tạo Popup menu như sau :
// khơi tạo popupmenu với vị trí nằm phía dưới đối tượng tvContext // tvContext có thể là textview, imageview, button ... PopupMenu popupMenu = new PopupMenu(MainActivity.this, tvContext); // gán giao diện cho popup menu popupMenu.getMenuInflater().inflate(R.menu.tuychon, popupMenu.getMenu()); // bắt sự kiện click item trên menu popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { switch (menuItem.getItemId()) { case R.id.menu_share: Toast.makeText(MainActivity.this, "SHARE", Toast.LENGTH_SHORT).show(); break; case R.id.menu_category: Toast.makeText(MainActivity.this, "CATEGORY", Toast.LENGTH_SHORT).show(); break; } return false; } }); popupMenu.show();
Tạo sự kiện click cho TextView để chạy đoạn code Popup Menu phía trên ta được kết quả như sau :

Code mẫu : https://github.com/huuhuybn/Menu