본문 바로가기
코딩일기/android studio

안드로이드 독학 15일차 : 플로팅 컨텍스트 메뉴(Floating Context Menu)

by 욱파이어니어 2021. 3. 30.
728x90
반응형

콘텍스트 메뉴는 특정 뷰를 길게 누르면 나오는 메뉴이다.

꾹 누르면 나오는것

 

해당 메뉴도 옵션 메뉴와 거의 흡사하다. 그래서 xml로도 만들 수 있고 자바 소스로도 만들 수 있다 이번엔 두 개를 같이

만들어봤다. 

일단 xml부터 보자.

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
    android:id="@+id/menu1"
    android:title="컨텍스트 메뉴1"/>
    <item
        android:id="@+id/menu2"
        android:title="컨텍스트 메뉴2"/>
</menu>

옆에서 만들어지는 화면을 보면 

이렇게 만들어졌다고 하는데 우리는 저 빨간색 부분만 만들고 이제 특정 뷰에 붙일거다.

그 부분은 자바 소스에 나와있으니 자바 소스를 보자.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView t1 = (TextView)findViewById(R.id.contextMenu);
        //해당 뷰에 context menu를 붙여두는것
        registerForContextMenu(t1);
    }

    @Override
    //컨텍스트 메뉴를 만들기위해서 사용하는 메소드
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        
        //R.menu.context_menu를 가져와서 쓴다고 하는 부분
        getMenuInflater().inflate(R.menu.context_menu,menu);
        
        //우리가 xml로 만든거 inflate 시켜서 만듬
        menu.setHeaderTitle("컨텍스트 메뉴");
        //아래 부분은
        menu.add(0,3,2,"메뉴3");
        menu.add(0,4,3,"메뉴4");
    }

    @Override
    //컨텍스트 메뉴가 선택 되었을때
    public boolean onContextItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
            case R.id.menu1:
                Toast.makeText(getApplicationContext(),"메뉴 1번 선택됨",Toast.LENGTH_SHORT).show();
                return true;
            case R.id.menu2:
                Toast.makeText(getApplicationContext(),"메뉴 2번 선택됨",Toast.LENGTH_SHORT).show();
                return true;
            case 3:
                Toast.makeText(getApplicationContext(),"메뉴 3번 선택됨",Toast.LENGTH_SHORT).show();
                return true;
            case 4:
                Toast.makeText(getApplicationContext(),"메뉴 4번 선택됨",Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onContextItemSelected(item);
        }
    }
}

자세한 설명은 주석으로 써놨으니 확인해보길 바란다.

 

반응형