[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