상세 컨텐츠

본문 제목

[안드로이드 코틀린 ] 컨텍스트메뉴(ContextMenu) 바탕화면 변경하는 방법

안드로이드

by aries574 2022. 8. 24. 15:53

본문


이번 시간에는 PC에서 마우스 오른쪽 누르면 나오는 메뉴 ContextMenu를 통해

바탕화면 변경하는 방법을 알아보겠습니다.

메뉴 폴더 만드는 방법과 파일 만드는 방법은 이전 포스팅에 이어서 하니 아래 링크에서 보시면 됩니다.

2022.08.23 - [안드로이드] - [안드로이드 코틀린] 옵션메뉴(OptionMenu), 서브메뉴(Sub Menu) 만드는 방법

 

[안드로이드 코틀린] 옵션메뉴(OptionMenu), 서브메뉴(Sub Menu) 만드는 방법

이번 시간에는 점 3개 이미지로 익숙한 옵션 메뉴(OptionMenu)와 서브메뉴(Sub Menu) 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메뉴 Menu 3. 메인 코드 MainActivity.kt 1. 실행 화면 2. ..

aries574.tistory.com


목차

1. 실행 화면
2. 컨텍스트 메뉴 context_menu.xml
3. 메인 화면 activity_main.xml
4. 메인 코드 MainActivity.kt


1. 실행 화면

 

2. 컨텍스트 메뉴 context_menu.xml

- 설명 -

 1. 메뉴에 3개의 아이템이 있습니다.

 2. 각 아이템을 누르면 바탕색상을 변경합니다.

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/menu_red"
        android:title="빨간 화면"/>
    <item
        android:id="@+id/menu_blue"
        android:title="파란 화면"/>
    <item
        android:id="@+id/menu_green"
        android:title="녹색 화면"/>
</menu>

 


3. 메인 화면 activity_main.xml

- 설명 -

 1. 컨텍스트메뉴를 호출하기 위한 TextView

 2. 텍스트뷰를 길게 누르면 컨텍스트 메뉴 호출

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/rootView"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="길게 눌러보세요"/>
</LinearLayout>


4. 메인 코드 MainActivity.kt

- 설명 -

1. registerForContextMenu

  컨텍스트 메뉴 연결 

1. onCreateContextMenu

  컨텍스트 메뉴 화면 적용 함수

 2. onContextItemSelected

  메뉴 선택 시 실행되는 함수

4. 메인 코드 MainActivity.kt

class MainActivity : AppCompatActivity(){

    private lateinit var rootView: LinearLayout

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        rootView = findViewById(R.id.rootView)
        val textView: TextView = findViewById(R.id.textView)

        textView.setOnClickListener {
            Toast.makeText(applicationContext, "눌러주세요", Toast.LENGTH_SHORT).show()
        }

        //컨텍스트 메뉴 연결
        registerForContextMenu(textView)
    }//onCreate

    /**
     * 컨텍스트메뉴 설정
     */
    override fun onCreateContextMenu(
        menu: ContextMenu?,
        v: View?,
        menuInfo: ContextMenu.ContextMenuInfo?
    ) {
        super.onCreateContextMenu(menu, v, menuInfo)

        val inflater: MenuInflater = menuInflater
        inflater.inflate(R.menu.context_menu, menu)
    }

    /**
     * 컨텍스트메뉴 선택 기능
     */
    override fun onContextItemSelected(item: MenuItem): Boolean {

        when(item.itemId){

            R.id.menu_red ->{
                rootView.setBackgroundColor(Color.RED)
                return true;
            }

            R.id.menu_blue ->{
                rootView.setBackgroundColor(Color.BLUE)
                return true;
            }

            R.id.menu_green ->{
                rootView.setBackgroundColor(Color.GREEN)
                return true;
            }

            else -> return false
        }
    }

    /**
     * 옵션메뉴 설정
     */
    override fun onCreateOptionsMenu(menu: Menu?): Boolean {

        val inflater: MenuInflater = menuInflater
        inflater.inflate(R.menu.option_menu, menu)

        return true
    }

    /**
     * 옵션메뉴 선택 기능
     */
    override fun onOptionsItemSelected(item: MenuItem): Boolean {

        when(item.itemId){
            R.id.item1 -> {
                Toast.makeText(this, "아이템1 선택", Toast.LENGTH_SHORT).show()
                return true
            }
            R.id.item2 -> {
                Toast.makeText(this, "아이템2 선택", Toast.LENGTH_SHORT).show()
                return true
            }
            R.id.item3 -> {
                Toast.makeText(this, "아이템3 선택", Toast.LENGTH_SHORT).show()
                return true
            }
            R.id.subItem1 -> {
                Toast.makeText(this, "서브아이템1 선택", Toast.LENGTH_SHORT).show()
                return true
            }
            R.id.subItem2 ->{
                Toast.makeText(this, "서브아이템2 선택", Toast.LENGTH_SHORT).show()
                return true
            }

            else -> return false
        }
    }
}

2022.08.22 - [안드로이드] - [안드로이드 코틀린] 텍스트뷰(TextView) 다양하게 꾸며보는 방법

 

[안드로이드 코틀린] 텍스트뷰(TextView) 다양하게 꾸며보는 방법

이번 시간에는 SpannableString 를 이용해서 텍스트뷰 꾸미는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 activity_main.xml 3. 메인 코드 MainActivity.kt 1. 실행 화면 2. 메..

aries574.tistory.com

2022.08.19 - [안드로이드] - [안드로이드 코틀린] 속성 애니메이션 (이미지를 움직이게 하는 방법)

 

[안드로이드 코틀린] 속성 애니메이션 (이미지를 움직이게 하는 방법)

이번 시간에는 속성 애니메이션을 통해 아이콘을 가로, 세로, 회전, 사라지고, 보이는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 activity_main.xml 3. 메인 코드 MainActivity.kt 1. 실..

aries574.tistory.com

2022.08.18 - [안드로이드] - [안드로이드 코틀린] 내가 원하는 글씨체 폰트(Font) 적용하는 방법

 

[안드로이드 코틀린] 내가 원하는 글씨체 폰트(Font) 적용하는 방법

이번 시간에는 안드로이드 기본 폰트가 아닌 다운로드한 폰트를 적용하는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 폰트 폴더 font 3. 메인 화면 activity_main.xml 4. 메인 코드 MainA

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역