앱 만들기/안드로이드

플로팅 컨텍스트 메뉴 만들기

나도 처음이야 2022. 7. 14.

https://soo0100.tistory.com/1896

 

옵션 메뉴 만들기

상태표시줄에 옵션 메뉴를 만들어 보겠습니다. 옵션메뉴를 선택하면, 화면이 옵션메뉴에 따라 색상이 변경됩니다. 1. 옵션메뉴를 XML로 구성하기 위해서, res-menu 폴더를 만듭니다. res 폴더에서 마

soo0100.tistory.com

 

콘텍스트 메뉴가 옵션 메뉴와 다른 점은 바로 각 View 별로 메뉴를 가질 수 있다는 점입니다.

옵션 메뉴는 해당 액티비티 당 하나씩만 만들었지만 말이죠.

오늘은 컨 특정 영역을 꾸~욱 누를 때 나오는 플로팅 컨텍스트 메뉴를 만들어 보겠습니다.

한때  많이 사용되었고 요즘도 자주 쓰이고 있는 메뉴이기도 합니다. 

결과는, 하기처럼 나오겠습니다. 

 

1. 메인 액티비티에서, 해당 뷰에 컨텍스트 메뉴를 등록합니다.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView = findViewById(R.id.TextView);
    //텍스트 뷰에 컨텍스트 메뉴 플로팅Type 을 등록한다.
    registerForContextMenu(textView);
}

textView를 꾸~욱 누르면 콘텍스트 메뉴가 나오도록 등록하는 과정입니다.

2. onCreateContextMenu() 함수로 메뉴를 구성합니다.

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("플로팅 바 스타일");
    menu.add(0,1,0,"파랑");
    menu.add(0,2,0,"녹색");
    menu.add(0,3,0,"빨강");
}

3. 메뉴를 선택 시 동작하는 함수입니다.

@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
    switch(item.getItemId()){
        case 1:
            textView.setBackgroundColor(Color.BLUE);
            return true;
        case 2:
            textView.setBackgroundColor(Color.GREEN);
            return true;
        case 3:
            textView.setBackgroundColor(Color.RED);
            return true;
        default:
            return super.onContextItemSelected(item);
    }
}

녹색 버튼을 선택시, 하기와 같은 결과 화면을 볼 수 있겠습니다.

감사합니다.

 

반응형

댓글